db-derby-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gabriele Kahlout <gabri...@mysimpatico.com>
Subject Re: cleaning database between test cases
Date Sun, 21 Mar 2010 11:10:37 GMT
If I execute each test, one a time (so the VM quits) everything works.
However, what a pain to comment each test, but the one I want to
execute.

2010/3/21, Gabriele Kahlout <gabriele@mysimpatico.com>:
> There is definetely some problem with Junit tests and apache derby.
>
> I've pasted the same code but as an exe file (where I do the setup and
> teardown) and there it works flawlessly.
>
> Consider:
>
> /*
>  * To change this template, choose Tools | Templates
>  * and open the template in the editor.
>  */
>
> package com.mysimpatico.memorizeasy;
> import static org.junit.Assert.*;
>
> import java.io.File;
> import java.sql.*;
> import junit.extensions.PrivilegedAccessor;
> import org.junit.*;
> import com.mysimpatico.memorizeasy.engine.Database;
> import com.mysimpatico.memorizeasy.executables.Setup;
> import com.mysimpatico.sqlwrapper.*;
>
>
> /**
>  *
>  * @author simpatico
>  */
> public class DatabaseTest1 {
>
>         private static final int n = 3; //should be less than 4000, 1000
>     public final static String getConnection = "getConnection(final
> boolean autoCommit) throws Exception";
>     public final static String publish = "publish(final int cycleNo)";
>     public final static String getMaxLastPubBatch = "getMaxLastPubBatch()";
>     public final static String getMaxBatch = "getMaxBatch()";
>     public final static String init = "init";
>
>     public final static String refTable = "refTable";
>     public final static String expTable = "expTable";
>     public final static String objTable = "objTable";
>     public final static String batColumn = "batColumn";
>     public final static String lastPubColumn = "lastPubColumn";
>     public final static String batTable = "batTable";
>     public final static String expColumn = "expColumn";
>     public final static String wColumn = "wColumn";
>     public final static String genderColumn = "genderColumn";
>     public final static String testMaterial = "testMaterial";
>     private final static File csv = new File(testMaterial +
> File.separatorChar + "dict.csv");
>     private static File dir;
>     public static String test = "test";
>
>     static void deleteDir(File f) {
>         if (f.isDirectory()) {
>             for (File sf : f.listFiles()) {
>                 deleteDir(sf);
>             }
>         }
>         f.delete();
>     }
>
>     public DatabaseTest1() {
>     }
>
>     @BeforeClass
>     public static void setUpClass() throws Exception {
>     }
>
>     @AfterClass
>     public static void tearDownClass() throws Exception {
>     }
>
>     @Before
>     public void setUp() {
>          dir = new File(test + System.currentTimeMillis());
>         dir.mkdir();
>         Setup.main(new String[]{Setup.test, dir.getAbsolutePath()});
>        // Database.init(dir);
>     }
>
>     @After
>     public void tearDown() {
>        SqlWrapper.shutDownDerby();
>        // new File(dir, "derby.properties").delete();
>        deleteDir(dir);
>     }
>
>     // TODO add test methods here.
>     // The methods must be annotated with annotation @Test. For example:
>     //
>      @Test
>     public void testGetMaxLastPubBatch() {
>
>          try {
>             final Table batTable = (Table)
> PrivilegedAccessor.getValue(Database.class, DatabaseTest.batTable);
>             final int unwanted = (Integer)
> PrivilegedAccessor.getValue(Database.class, "unwanted");
>             int ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>             assertEquals(unwanted, ret); // empty batTable returns unwanted
>
>             final Connection con = (Connection)
> PrivilegedAccessor.invokeMethod(Database.class, getConnection, true);
>             final Statement st = con.createStatement();
>             int res = st.executeUpdate(SqlWrapper.insert(batTable));
>             assertEquals(1, res);
>             ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>             assertEquals(SqlWrapper.index - 1, ret); // batTable with
> single unpublished batch returns SqlWrapper.index-1;
>             assertEquals(0, SqlWrapper.index - 1);
>             PrivilegedAccessor.invokeMethod(Database.class, publish,
> 1); //publish batch
>             ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>             assertEquals(1, ret); // batTable with single published
> batch returns 1
>
>             int res2 = st.executeUpdate(SqlWrapper.deleteAll(batTable));
>             assertEquals(1, res2);
>
>             for (int i = SqlWrapper.index; i <= n; i++) {
>                 int res1 = st.executeUpdate(SqlWrapper.insert(batTable));
>                 assertEquals(1, res1);
>                 final int ret1 = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>                 assertEquals(0, ret1); //batTable with n batch not
> published should return 0
>             }
>
>             int res3 = st.executeUpdate(SqlWrapper.deleteAll(batTable));
>             assertEquals(n, res3);
>             con.close();
>         } catch (Exception e) {
>             e.printStackTrace();
>             SqlWrapper.printHistory();
>             fail();
>         }
>     }
>
>       @Test
>     public void testGetMaxLastPubBatch1() {
>          try {
>             final Table batTable = (Table)
> PrivilegedAccessor.getValue(Database.class, DatabaseTest.batTable);
>             final int unwanted = (Integer)
> PrivilegedAccessor.getValue(Database.class, "unwanted");
>             int ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>             assertEquals(unwanted, ret); // empty batTable returns unwanted
>
>             final Connection con = (Connection)
> PrivilegedAccessor.invokeMethod(Database.class, getConnection, true);
>             final Statement st = con.createStatement();
>             int res = st.executeUpdate(SqlWrapper.insert(batTable));
>             assertEquals(1, res);
>             ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>             assertEquals(SqlWrapper.index - 1, ret); // batTable with
> single unpublished batch returns SqlWrapper.index-1;
>             assertEquals(0, SqlWrapper.index - 1);
>             PrivilegedAccessor.invokeMethod(Database.class, publish,
> 1); //publish batch
>             ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>             assertEquals(1, ret); // batTable with single published
> batch returns 1
>
>             int res2 = st.executeUpdate(SqlWrapper.deleteAll(batTable));
>             assertEquals(1, res2);
>
>             for (int i = SqlWrapper.index; i <= n; i++) {
>                 int res1 = st.executeUpdate(SqlWrapper.insert(batTable));
>                 assertEquals(1, res1);
>                 final int ret1 = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>                 assertEquals(0, ret1); //batTable with n batch not
> published should return 0
>             }
>
>             int res3 = st.executeUpdate(SqlWrapper.deleteAll(batTable));
>             assertEquals(n, res3);
>             con.close();
>         } catch (Exception e) {
>             e.printStackTrace();
>             SqlWrapper.printHistory();
>             fail();
>         }
>     }
>
> }
>
> ------ and now the exec file: --------
>
>
> import com.mysimpatico.memorizeasy.engine.Database;
> import com.mysimpatico.memorizeasy.executables.Setup;
>
> import com.mysimpatico.sqlwrapper.*;
> import java.io.File;
> import java.sql.*;
> import junit.extensions.PrivilegedAccessor;
>
> /*
>  * To change this template, choose Tools | Templates
>  * and open the template in the editor.
>  */
> /**
>  *
>  * @author simpatico
>  */
> public class DbDeletionTest {
>
>      public final static String getConnection = "getConnection(final
> boolean autoCommit) throws Exception";
>     public final static String publish = "publish(final int cycleNo)";
>     public final static String getMaxLastPubBatch = "getMaxLastPubBatch()";
>     public final static String getMaxBatch = "getMaxBatch()";
>     public final static String init = "init";
>
>     public final static String refTable = "refTable";
>     public final static String expTable = "expTable";
>     public final static String objTable = "objTable";
>     public final static String batColumn = "batColumn";
>     public final static String lastPubColumn = "lastPubColumn";
>     public final static String batTable = "batTable";
>     public final static String expColumn = "expColumn";
>     public final static String wColumn = "wColumn";
>     public final static String genderColumn = "genderColumn";
>     public final static String testMaterial = "testMaterial";
>     private final static File csv = new File(testMaterial +
> File.separatorChar + "dict.csv");
>
>     /*  public static boolean deleteDir(File dir) {
>     if (dir.isDirectory()) {
>     String[] children = dir.list();
>
>     for (int i = 0; i < children.length; i++) {
>     boolean success = deleteDir(new File(dir, children[i]));
>     if (!success) {
>     return false;
>     }
>     } // The directory is now empty so delete it return dir.delete(); }
>     }
>     return dir.delete();
>     }*/
>    static void deleteDir(File f) {
>         if (f.isDirectory()) {
>             for (File sf : f.listFiles()) {
>                 deleteDir(sf);
>             }
>         }
>         f.delete();
>     }
>
>
>     static void test() throws Exception {
>         final File dir = new File("test" + System.currentTimeMillis());
>         dir.mkdir();
>        Setup.main(new String[]{"test", dir.getAbsolutePath()});
>
>        int n = 3;
>        try {
>             final Table batTable = (Table)
> PrivilegedAccessor.getValue(Database.class, DbDeletionTest.batTable);
>             final int unwanted = (Integer)
> PrivilegedAccessor.getValue(Database.class, "unwanted");
>             int ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>            // assertEquals(unwanted, ret); // empty batTable returns
> unwanted
>
>             final Connection con = (Connection)
> PrivilegedAccessor.invokeMethod(Database.class, getConnection, true);
>             final Statement st = con.createStatement();
>             int res = st.executeUpdate(SqlWrapper.insert(batTable));
>            // assertEquals(1, res);
>             ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>           //  assertEquals(SqlWrapper.index - 1, ret); // batTable
> with single unpublished batch returns SqlWrapper.index-1;
>           //  assertEquals(0, SqlWrapper.index - 1);
>             PrivilegedAccessor.invokeMethod(Database.class, publish,
> 1); //publish batch
>             ret = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>         //    assertEquals(1, ret); // batTable with single published
> batch returns 1
>
>             int res2 = st.executeUpdate(SqlWrapper.deleteAll(batTable));
>        //     assertEquals(1, res2);
>
>             for (int i = SqlWrapper.index; i <= n; i++) {
>                 int res1 = st.executeUpdate(SqlWrapper.insert(batTable));
>        //         assertEquals(1, res1);
>                 final int ret1 = (Integer)
> PrivilegedAccessor.invokeMethod(Database.class, getMaxLastPubBatch);
>
>                 //assertEquals(0, ret1); //batTable with n batch not
> published should return 0
>             }
>
>             int res3 = st.executeUpdate(SqlWrapper.deleteAll(batTable));
>          //   assertEquals(n, res3);
>             con.close();
>         } catch (Exception e) {
>             e.printStackTrace();
>             SqlWrapper.printHistory();
>           //  fail();
>         }
>
>         SqlWrapper.shutDownDerby();
>         deleteDir(dir);
>         System.out.println("test executed.");
>
>     }
>
>     public static void main(String[] args) {
>         try {
>             test();
>             test();
>         } catch (Exception e) {
>             e.printStackTrace();
>         }
>     }
> }
>
>
> 2010/3/20, Gabriele Kahlout <gabriele@mysimpatico.com>:
>> Why does the exception say what is this File on which this
>> OverlappingFileLockException is occuring, so that I can sort it out?
>>
>> 2010/3/20, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>> not really, commenting the derby.properties code still results in the
>>> same exception.
>>>
>>> 2010/3/20, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>>> It looks like the problem is with the derby.properties file, as it
>>>> sticks in the file system.
>>>> Should I delete them, in a special way/order?
>>>>
>>>> 2010/3/20, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>>>> I quick solution (and actually not dirty) solution I came up with to
>>>>> break the symmetry is add the timestamp to the name of the testfolder,
>>>>> where the File variable is shared btw the setUp and tearDown methods.
>>>>> So the folders still disappear from my file system.
>>>>>
>>>>> However, it'd still be interesting to investigate why the above SSCCE
>>>>> insists on the presence of the db, as the exception indicates.
>>>>>
>>>>> However, running it into my code I get a new exception:
>>>>>
>>>>> ava.sql.SQLException: Failed to create database '/Volumes/STORE N GO
>>>>> 1/ws/MemorizEasy/test1269105407561/db.sqlwrapper', see the next
>>>>> exception for details.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.jdbc.InternalDriver.connect(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown
>>>>> Source)
>>>>>         at
>>>>> java.sql.DriverManager.getConnection(DriverManager.java:582)
>>>>>         at
>>>>> java.sql.DriverManager.getConnection(DriverManager.java:207)
>>>>>         at
>>>>> com.mysimpatico.sqlwrapper.SqlWrapper.connectToDerby(SqlWrapper.java:174)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.engine.Database.init(Database.java:477)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.executables.Setup.main(Setup.java:70)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.DatabaseTest.setUp(DatabaseTest.java:111)
>>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>         at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>         at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>         at
>>>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>>>>         at
>>>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>>>>         at
>>>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>>>         at
>>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
>>>>>         at
>>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
>>>>>         at
>>>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
>>>>>         at
>>>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
>>>>>         at
>>>>> org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>>>         at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
>>>>>         at
>>>>> junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
>>>>> Caused by: java.sql.SQLException: Failed to create database
>>>>> '/Volumes/STORE N GO
>>>>> 1/ws/MemorizEasy/test1269105407561/db.sqlwrapper', see the next
>>>>> exception for details.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         ... 37 more
>>>>> Caused by: java.sql.SQLException: Startup failed due to an exception.
>>>>> See next exception for details.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
>>>>> Source)
>>>>>         ... 34 more
>>>>> Caused by: java.sql.SQLException: Java exception: ':
>>>>> java.nio.channels.OverlappingFileLockException'.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.javaException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         ... 37 more
>>>>> Caused by: java.nio.channels.OverlappingFileLockException
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl$SharedFileLockTable.checkList(FileChannelImpl.java:1170)
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl$SharedFileLockTable.add(FileChannelImpl.java:1072)
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:878)
>>>>>         at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
>>>>>         at
>>>>> org.apache.derby.impl.io.DirFile4.getExclusiveFileLock(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown
>>>>> Source)
>>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.getJBMSLockOnDB(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.store.raw.RawStore.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.db.BasicDatabase.bootStore(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.db.BasicDatabase.boot(Unknown Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Unknown
>>>>> Source)
>>>>>         ... 34 more
>>>>> java.sql.SQLException: Startup failed due to an exception. See next
>>>>> exception for details.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.seeNextException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.jdbc.InternalDriver.connect(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown
>>>>> Source)
>>>>>         at
>>>>> java.sql.DriverManager.getConnection(DriverManager.java:582)
>>>>>         at
>>>>> java.sql.DriverManager.getConnection(DriverManager.java:207)
>>>>>         at
>>>>> com.mysimpatico.sqlwrapper.SqlWrapper.connectToDerby(SqlWrapper.java:174)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.engine.Database.init(Database.java:477)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.executables.Setup.main(Setup.java:70)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.DatabaseTest.setUp(DatabaseTest.java:111)
>>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>         at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>         at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>         at
>>>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>>>>         at
>>>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>>>>         at
>>>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>>>         at
>>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
>>>>>         at
>>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
>>>>>         at
>>>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
>>>>>         at
>>>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
>>>>>         at
>>>>> org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>>>         at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
>>>>>         at
>>>>> junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
>>>>> Caused by: java.sql.SQLException: Startup failed due to an exception.
>>>>> See next exception for details.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         ... 40 more
>>>>> Caused by: java.sql.SQLException: Java exception: ':
>>>>> java.nio.channels.OverlappingFileLockException'.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.javaException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         ... 37 more
>>>>> Caused by: java.nio.channels.OverlappingFileLockException
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl$SharedFileLockTable.checkList(FileChannelImpl.java:1170)
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl$SharedFileLockTable.add(FileChannelImpl.java:1072)
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:878)
>>>>>         at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
>>>>>         at
>>>>> org.apache.derby.impl.io.DirFile4.getExclusiveFileLock(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown
>>>>> Source)
>>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.getJBMSLockOnDB(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.store.raw.RawStore.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.db.BasicDatabase.bootStore(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.db.BasicDatabase.boot(Unknown Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Unknown
>>>>> Source)
>>>>>         ... 34 more
>>>>> java.sql.SQLException: Java exception: ':
>>>>> java.nio.channels.OverlappingFileLockException'.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.Util.javaException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.EmbedConnection.createDatabase(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection.<init>(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection30.<init>(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.jdbc.EmbedConnection40.<init>(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.jdbc.Driver40.getNewEmbedConnection(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.jdbc.InternalDriver.connect(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.jdbc.AutoloadedDriver.connect(Unknown
>>>>> Source)
>>>>>         at
>>>>> java.sql.DriverManager.getConnection(DriverManager.java:582)
>>>>>         at
>>>>> java.sql.DriverManager.getConnection(DriverManager.java:207)
>>>>>         at
>>>>> com.mysimpatico.sqlwrapper.SqlWrapper.connectToDerby(SqlWrapper.java:174)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.engine.Database.init(Database.java:477)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.executables.Setup.main(Setup.java:70)
>>>>>         at
>>>>> com.mysimpatico.memorizeasy.DatabaseTest.setUp(DatabaseTest.java:111)
>>>>>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>         at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>         at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>         at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>         at
>>>>> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44)
>>>>>         at
>>>>> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15)
>>>>>         at
>>>>> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:27)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>>>         at
>>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73)
>>>>>         at
>>>>> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46)
>>>>>         at
>>>>> org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180)
>>>>>         at
>>>>> org.junit.runners.ParentRunner.access$000(ParentRunner.java:41)
>>>>>         at
>>>>> org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28)
>>>>>         at
>>>>> org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
>>>>>         at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
>>>>>         at
>>>>> junit.framework.JUnit4TestAdapter.run(JUnit4TestAdapter.java:39)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:515)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:1031)
>>>>>         at
>>>>> org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:888)
>>>>> Caused by: java.sql.SQLException: Java exception: ':
>>>>> java.nio.channels.OverlappingFileLockException'.
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>> Source)
>>>>>         ... 41 more
>>>>> Caused by: java.nio.channels.OverlappingFileLockException
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl$SharedFileLockTable.checkList(FileChannelImpl.java:1170)
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl$SharedFileLockTable.add(FileChannelImpl.java:1072)
>>>>>         at
>>>>> sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:878)
>>>>>         at java.nio.channels.FileChannel.tryLock(FileChannel.java:962)
>>>>>         at
>>>>> org.apache.derby.impl.io.DirFile4.getExclusiveFileLock(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown
>>>>> Source)
>>>>>         at java.security.AccessController.doPrivileged(Native Method)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.getJBMSLockOnDB(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.raw.data.BaseDataFileFactory.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.store.raw.RawStore.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.store.access.RAMAccessManager.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.startModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.bootServiceModule(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.db.BasicDatabase.bootStore(Unknown
>>>>> Source)
>>>>>         at org.apache.derby.impl.db.BasicDatabase.boot(Unknown Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.boot(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.TopService.bootModule(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.bootService(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.impl.services.monitor.BaseMonitor.createPersistentService(Unknown
>>>>> Source)
>>>>>         at
>>>>> org.apache.derby.iapi.services.monitor.Monitor.createPersistentService(Unknown
>>>>> Source)
>>>>>         ... 34 more
>>>>> Sat Mar 20 18:16:53 Gabriele-Kahlouts-MacBook.local java[6566]
>>>>> <Error>: kCGErrorIllegalArgument: CGSOrderWindowList
>>>>> Sat Mar 20 18:16:53 Gabriele-Kahlouts-MacBook.local java[6566]
>>>>> <Error>: kCGErrorFailure: Set a breakpoint @ CGErrorBreakpoint() to
>>>>> catch errors as they are logged.
>>>>> Test com.mysimpatico.memorizeasy.DatabaseTest FAILED (crashed)
>>>>> /Volumes/STORE N GO 1/ws/MemorizEasy/nbproject/build-impl.xml:706:
>>>>> Some tests failed; see details above.
>>>>>
>>>>> Any clues?
>>>>>
>>>>>
>>>>>
>>>>> 2010/3/20, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>>>>> Well, did u try it? The result is the same, run on the same code
>>>>>> example I gave above but replacing it with you method.
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2010/3/20, Peter Ondruška <peter.ondruska@gmail.com>:
>>>>>>> IMHO your deleteDir method is not deleting anything. See
>>>>>>> http://java.sun.com/j2se/1.4.2/docs/api/java/io/File.html#delete()
>>>>>>>
>>>>>>> It should be something like:
>>>>>>>
>>>>>>> void delete(File f){
>>>>>>>   if (f.isDirectory())
>>>>>>>     for (File sf: f.listFiles()) delete(sf);
>>>>>>>   f.delete();
>>>>>>> }
>>>>>>>
>>>>>>> On Sat, Mar 20, 2010 at 1:05 PM, Gabriele Kahlout
>>>>>>> <gabriele@mysimpatico.com> wrote:
>>>>>>>> any updates? This is bogging me down.
>>>>>>>>
>>>>>>>> 2010/3/19, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>>>>>>>> Here is the code for wrapper methods that might be incorrect:
>>>>>>>>>
>>>>>>>>>  public final static Connection connectToDerby(final File
>>>>>>>>> parentPath,
>>>>>>>>> final boolean create) throws InstantiationException,
>>>>>>>>> IllegalAccessException, ClassNotFoundException, SQLException {
>>>>>>>>>         //  Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
>>>>>>>>>         final Connection con =
>>>>>>>>> DriverManager.getConnection("jdbc:derby:" + parentPath.getPath() +
>>>>>>>>> File.separator + "db.sqlwrapper;create=" + create);
>>>>>>>>>         return con;
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>> public static boolean shutDownDerby() {
>>>>>>>>>         try {
>>>>>>>>>             Connection con = connectToDerby();
>>>>>>>>>             con.close();
>>>>>>>>>             con =
>>>>>>>>> DriverManager.getConnection("jdbc:derby:db.sqlwrapper;shutdown=true");
>>>>>>>>>
>>>>>>>>>         } catch (SQLException e) { // with throw exception on
>>>>>>>>> successful deletion.
>>>>>>>>>             return true;
>>>>>>>>>         }
>>>>>>>>>         return false;
>>>>>>>>>     }
>>>>>>>>>
>>>>>>>>> 2010/3/19, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>>>>>>>>> Here is the shortest test that shows the problem:
>>>>>>>>>>
>>>>>>>>>> import com.mysimpatico.sqlwrapper.*;
>>>>>>>>>> import java.io.File;
>>>>>>>>>> import java.sql.*;
>>>>>>>>>>
>>>>>>>>>> /*
>>>>>>>>>>  * To change this template, choose Tools | Templates
>>>>>>>>>>  * and open the template in the editor.
>>>>>>>>>>  */
>>>>>>>>>> /**
>>>>>>>>>>  *
>>>>>>>>>>  * @author simpatico
>>>>>>>>>>  */
>>>>>>>>>> public class DbDeletionTest {
>>>>>>>>>>
>>>>>>>>>>     public static boolean deleteDir(File dir) {
>>>>>>>>>>         if (dir.isDirectory()) {
>>>>>>>>>>             String[] children = dir.list();
>>>>>>>>>>             for (int i = 0; i < children.length; i++) {
>>>>>>>>>>                 boolean success = deleteDir(new File(dir,
>>>>>>>>>> children[i]));
>>>>>>>>>>                 if (!success) {
>>>>>>>>>>                     return false;
>>>>>>>>>>                 }
>>>>>>>>>>             } // The directory is now empty so delete it return
>>>>>>>>>> dir.delete(); }
>>>>>>>>>>         }
>>>>>>>>>>         return dir.delete();
>>>>>>>>>>     }
>>>>>>>>>>
>>>>>>>>>>     public static void test() throws Exception {
>>>>>>>>>>         final File dir = new File("test");
>>>>>>>>>>         dir.mkdir();
>>>>>>>>>>         final Connection con = SqlWrapper.connectToDerby(dir,
>>>>>>>>>> true);
>>>>>>>>>>         final Statement st = con.createStatement();
>>>>>>>>>>         SqlWrapper.setVendor(SqlWrapper.vendor.JAVADB);
>>>>>>>>>>
>>>>>>>>>>         final String expTableName = "Expressions";
>>>>>>>>>>         final String exp = "expression";
>>>>>>>>>>         final ReferencedColumn expColumn = new
>>>>>>>>>> ReferencedColumn(exp,
>>>>>>>>>> SqlWrapper.VARCHAR, 100);
>>>>>>>>>>         final Table expTable = new Table(expTableName, expColumn,
>>>>>>>>>> expColumn);
>>>>>>>>>>         st.executeUpdate(SqlWrapper.create(expTable));
>>>>>>>>>>         con.close();
>>>>>>>>>>         SqlWrapper.shutDownDerby();
>>>>>>>>>>         deleteDir(dir);
>>>>>>>>>>         System.out.println("test executed.");
>>>>>>>>>>
>>>>>>>>>>     }
>>>>>>>>>>
>>>>>>>>>>     public static void main(String[] args) {
>>>>>>>>>>         try {
>>>>>>>>>>             test();
>>>>>>>>>>             test();
>>>>>>>>>>         }
>>>>>>>>>>             catch (Exception e) {
>>>>>>>>>>             e.printStackTrace();
>>>>>>>>>>         }
>>>>>>>>>>     }
>>>>>>>>>> }
>>>>>>>>>> The libraries needed are: derby.jar, SqlWrapper.jar (just wraps
>>>>>>>>>> around
>>>>>>>>>> sql statements, u can replace it with sql strings).
>>>>>>>>>> http://memorizeasy.googlecode.com/svn/tags/live/lib/derby.jar
>>>>>>>>>> http://memorizeasy.googlecode.com/svn/tags/live/lib/sqlwrapper.jar
>>>>>>>>>>
>>>>>>>>>> The output is:
>>>>>>>>>> test executed.
>>>>>>>>>> Shutting down due to severe error.
>>>>>>>>>> java.sql.SQLException: Table/View 'EXPRESSIONS' already exists in
>>>>>>>>>> Schema
>>>>>>>>>> 'APP'.
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at DbDeletionTest.test(DbDeletionTest.java:42)
>>>>>>>>>>         at DbDeletionTest.main(DbDeletionTest.java:53)
>>>>>>>>>> Caused by: java.sql.SQLException: Table/View 'EXPRESSIONS'
>>>>>>>>>> already
>>>>>>>>>> exists in Schema 'APP'.
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>         at
>>>>>>>>>> org.apache.derby.impl.jdbc.SQLExceptionFactory40.wrapArgsForTransportAcrossDRDA(Unknown
>>>>>>>>>> Source)
>>>>>>>>>>
>>>>>>>>>> 2010/3/19, Gabriele Kahlout <gabriele@mysimpatico.com>:
>>>>>>>>>>> 'rm -R myDbDirectory' in *nix'
>>>>>>>>>>> How do you programmatically, from java do that (OS independent)?
>>>>>>>>>>> What I do is I iterate over the db folder and delete all
>>>>>>>>>>> contents,
>>>>>>>>>>> as
>>>>>>>>>>> returned by the java.io API.
>>>>>>>>>>>
>>>>>>>>>>> However, even doing that seems not sufficient.
>>>>>>>>>>> I see that the test folder (the one that contains db.sqlwrapper)
>>>>>>>>>>> is
>>>>>>>>>>> deleted after the first test, and created in the setup of the
>>>>>>>>>>> next.
>>>>>>>>>>> However, I get:
>>>>>>>>>>>
>>>>>>>>>>> Caused by: ERROR X0Y32: Table/View 'EXPRESSIONS' already exists
>>>>>>>>>>> in
>>>>>>>>>>> Schema
>>>>>>>>>>> 'APP'.
>>>>>>>>>>>
>>>>>>>>>>> I think it has to do with the copy in memory not being updated
>>>>>>>>>>> with
>>>>>>>>>>> the disk. That is because through the debugger, I've even
>>>>>>>>>>> manually
>>>>>>>>>>> deleted the db, but to no avail.
>>>>>>>>>>> Maybe this is more of a Java question now:
>>>>>>>>>>> How do I make sure the memory is flushed/sync with the disk? Or
>>>>>>>>>>> that
>>>>>>>>>>> derby, when creating a connection is not fooled by the cache in
>>>>>>>>>>> memory?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> 2010/3/19, Kristian Waagan <Kristian.Waagan@sun.com>:
>>>>>>>>>>>> On 19.03.10 10:11, Gabriele Kahlout wrote:
>>>>>>>>>>>>> Also, I've copied from the code what I seem to need, and then
>>>>>>>>>>>>> end
>>>>>>>>>>>>> up
>>>>>>>>>>>>> with when I use the db again in a 2nd method.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Caused by: java.sql.SQLException: Database '/Volumes/STORE N
>>>>>>>>>>>>> GO/ws/MemorizEasy/test/db.sqlwrapper' not found.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Note that after destroying the schemas, I shut down the db,
>>>>>>>>>>>>> and
>>>>>>>>>>>>> delete
>>>>>>>>>>>>> the test folder of the previous method.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Hi Gabriele,
>>>>>>>>>>>>
>>>>>>>>>>>> I don't know the requirements of your application, but note
>>>>>>>>>>>> that
>>>>>>>>>>>> in
>>>>>>>>>>>> general you have three options:
>>>>>>>>>>>>
>>>>>>>>>>>>   - clean the database and reuse it
>>>>>>>>>>>>     This is what we're doing in the Derby test framework (see
>>>>>>>>>>>> the
>>>>>>>>>>>> class
>>>>>>>>>>>> that Bryan pointed to), because it would take much longer to
>>>>>>>>>>>> actually
>>>>>>>>>>>> delete and recreate the database files all the time. Here we
>>>>>>>>>>>> use
>>>>>>>>>>>> meta-data to detect all objects added to the database during
>>>>>>>>>>>> the
>>>>>>>>>>>> test,
>>>>>>>>>>>> and then we drop them.
>>>>>>>>>>>>
>>>>>>>>>>>>   - simply just delete the database on disk (i.e. 'rm -R
>>>>>>>>>>>> myDbDirectory'
>>>>>>>>>>>> in *nix) and create a new one for the next test (through JDBC,
>>>>>>>>>>>> using
>>>>>>>>>>>> 'jdbc:derby:...;create=true').
>>>>>>>>>>>>     You should shut down the database before deleting the files
>>>>>>>>>>>> on
>>>>>>>>>>>> disk.
>>>>>>>>>>>>
>>>>>>>>>>>>   - if you just need a database for a short period of time or
>>>>>>>>>>>> similar,
>>>>>>>>>>>> use an in-memory db.
>>>>>>>>>>>>     Remember to drop it [1] to free up the memory.
>>>>>>>>>>>>
>>>>>>>>>>>> It's hard to tell exactly what went wrong above, but are you
>>>>>>>>>>>> sure
>>>>>>>>>>>> the
>>>>>>>>>>>> database is still on disk?
>>>>>>>>>>>> Can you locate the directory? (you should see the directories
>>>>>>>>>>>> db.sqlwrapper, db.sqlwrapper/seg0 and db.sqlwrapper/log)
>>>>>>>>>>>> If not, why did it get deleted?
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Kristian
>>>>>>>>>>>>
>>>>>>>>>>>> [1] Note that proper support for this is added in 10.6, by
>>>>>>>>>>>> using
>>>>>>>>>>>> the
>>>>>>>>>>>> "drop=true" attribute. In 10.5, the mechanism is different.
>>>>>>>>>>>>
>>>>>>>>>>>>> 2010/3/18, Gabriele Kahlout<gabriele@mysimpatico.com>:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> I reached here:
>>>>>>>>>>>>>> http://svn.apache.org/viewvc/db/derby/code/trunk/java/testing/org/apache/derbyTesting/junit/CleanDatabaseTestSetup.java?view=markup
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> But then what do I do? The code relies on some other class,
>>>>>>>>>>>>>> and
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> seems like I'd have to import the whole package to use it. Is
>>>>>>>>>>>>>> that
>>>>>>>>>>>>>> it?
>>>>>>>>>>>>>> Besides that one cannot delete the APP schema (which is the
>>>>>>>>>>>>>> one
>>>>>>>>>>>>>> i
>>>>>>>>>>>>>> use), while the code seems to want to do that.
>>>>>>>>>>>>>> If not, is there how I can use this without concerning myself
>>>>>>>>>>>>>> with
>>>>>>>>>>>>>> the
>>>>>>>>>>>>>> impl. details?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 2010/3/18, Gabriele Kahlout<gabriele@mysimpatico.com>:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Can you provide a link to it? Also, is it in some library I
>>>>>>>>>>>>>>> could
>>>>>>>>>>>>>>> use?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 2010/3/18, Bryan Pendleton<bpendleton.derby@gmail.com>:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> For testing, how can I make sure the tearDown completely
>>>>>>>>>>>>>>>>> deletes
>>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>>> db, and setUp creates a completely new copy, without using
>>>>>>>>>>>>>>>>> in-memory
>>>>>>>>>>>>>>>>> db?
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> We do this in the Derby regression test suite.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Have a look at
>>>>>>>>>>>>>>>> org.apache.derbyTesting.functionTests.junit.CleanDatabaseTestSetup.java
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> thanks,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> bryan
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>> K. Gabriele
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --- unchanged since 25/1/10 ---
>>>>>>>>>>>>>>> P.S. Unless a notification (LON), please reply either with
>>>>>>>>>>>>>>> an
>>>>>>>>>>>>>>> answer
>>>>>>>>>>>>>>> OR with " ACK" appended to this subject within 48 hours.
>>>>>>>>>>>>>>> Otherwise,
>>>>>>>>>>>>>>> I
>>>>>>>>>>>>>>> might resend.
>>>>>>>>>>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧
>>>>>>>>>>>>>>> IsAnswerTo(x,
>>>>>>>>>>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x))
>>>>>>>>>>>>>>> ∧
>>>>>>>>>>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Also note that correspondence may be received only from
>>>>>>>>>>>>>>> specified
>>>>>>>>>>>>>>> a
>>>>>>>>>>>>>>> priori senders, or if the subject of this email ends with a
>>>>>>>>>>>>>>> code,
>>>>>>>>>>>>>>> eg.
>>>>>>>>>>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>>>>>>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList)
>>>>>>>>>>>>>>> ∨
>>>>>>>>>>>>>>> (∃y.
>>>>>>>>>>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X)
>>>>>>>>>>>>>>> ).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> K. Gabriele
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --- unchanged since 25/1/10 ---
>>>>>>>>>>>>>> P.S. Unless a notification (LON), please reply either with an
>>>>>>>>>>>>>> answer
>>>>>>>>>>>>>> OR with " ACK" appended to this subject within 48 hours.
>>>>>>>>>>>>>> Otherwise,
>>>>>>>>>>>>>> I
>>>>>>>>>>>>>> might resend.
>>>>>>>>>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧
>>>>>>>>>>>>>> IsAnswerTo(x,
>>>>>>>>>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x))
>>>>>>>>>>>>>> ∧
>>>>>>>>>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Also note that correspondence may be received only from
>>>>>>>>>>>>>> specified
>>>>>>>>>>>>>> a
>>>>>>>>>>>>>> priori senders, or if the subject of this email ends with a
>>>>>>>>>>>>>> code,
>>>>>>>>>>>>>> eg.
>>>>>>>>>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>>>>>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨
>>>>>>>>>>>>>> (∃y.
>>>>>>>>>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> --
>>>>>>>>>>> Regards,
>>>>>>>>>>> K. Gabriele
>>>>>>>>>>>
>>>>>>>>>>> --- unchanged since 25/1/10 ---
>>>>>>>>>>> P.S. Unless a notification (LON), please reply either with an
>>>>>>>>>>> answer
>>>>>>>>>>> OR with " ACK" appended to this subject within 48 hours.
>>>>>>>>>>> Otherwise,
>>>>>>>>>>> I
>>>>>>>>>>> might resend.
>>>>>>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧
>>>>>>>>>>> IsAnswerTo(x,
>>>>>>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>>>>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>>>>>>
>>>>>>>>>>> Also note that correspondence may be received only from
>>>>>>>>>>> specified
>>>>>>>>>>> a
>>>>>>>>>>> priori senders, or if the subject of this email ends with a
>>>>>>>>>>> code,
>>>>>>>>>>> eg.
>>>>>>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨
>>>>>>>>>>> (∃y.
>>>>>>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Regards,
>>>>>>>>>> K. Gabriele
>>>>>>>>>>
>>>>>>>>>> --- unchanged since 25/1/10 ---
>>>>>>>>>> P.S. Unless a notification (LON), please reply either with an
>>>>>>>>>> answer
>>>>>>>>>> OR with " ACK" appended to this subject within 48 hours.
>>>>>>>>>> Otherwise,
>>>>>>>>>> I
>>>>>>>>>> might resend.
>>>>>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧
>>>>>>>>>> IsAnswerTo(x,
>>>>>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>>>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>>>>>
>>>>>>>>>> Also note that correspondence may be received only from specified
>>>>>>>>>> a
>>>>>>>>>> priori senders, or if the subject of this email ends with a code,
>>>>>>>>>> eg.
>>>>>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨
>>>>>>>>>> (∃y.
>>>>>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> Regards,
>>>>>>>>> K. Gabriele
>>>>>>>>>
>>>>>>>>> --- unchanged since 25/1/10 ---
>>>>>>>>> P.S. Unless a notification (LON), please reply either with an
>>>>>>>>> answer
>>>>>>>>> OR with " ACK" appended to this subject within 48 hours.
>>>>>>>>> Otherwise,
>>>>>>>>> I
>>>>>>>>> might resend.
>>>>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧
>>>>>>>>> IsAnswerTo(x,
>>>>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>>>>
>>>>>>>>> Also note that correspondence may be received only from specified
>>>>>>>>> a
>>>>>>>>> priori senders, or if the subject of this email ends with a code,
>>>>>>>>> eg.
>>>>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>>>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> K. Gabriele
>>>>>>>>
>>>>>>>> --- unchanged since 25/1/10 ---
>>>>>>>> P.S. Unless a notification (LON), please reply either with an
>>>>>>>> answer
>>>>>>>> OR with " ACK" appended to this subject within 48 hours. Otherwise,
>>>>>>>> I
>>>>>>>> might resend.
>>>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧
>>>>>>>> IsAnswerTo(x,
>>>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>>>
>>>>>>>> Also note that correspondence may be received only from specified a
>>>>>>>> priori senders, or if the subject of this email ends with a code,
>>>>>>>> eg.
>>>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> K. Gabriele
>>>>>>
>>>>>> --- unchanged since 25/1/10 ---
>>>>>> P.S. Unless a notification (LON), please reply either with an answer
>>>>>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>>>>>> might resend.
>>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>>
>>>>>> Also note that correspondence may be received only from specified a
>>>>>> priori senders, or if the subject of this email ends with a code, eg.
>>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> K. Gabriele
>>>>>
>>>>> --- unchanged since 25/1/10 ---
>>>>> P.S. Unless a notification (LON), please reply either with an answer
>>>>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>>>>> might resend.
>>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>>
>>>>> Also note that correspondence may be received only from specified a
>>>>> priori senders, or if the subject of this email ends with a code, eg.
>>>>> -LICHT01X, then also from senders whose reply contains it.
>>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> K. Gabriele
>>>>
>>>> --- unchanged since 25/1/10 ---
>>>> P.S. Unless a notification (LON), please reply either with an answer
>>>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>>>> might resend.
>>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>>
>>>> Also note that correspondence may be received only from specified a
>>>> priori senders, or if the subject of this email ends with a code, eg.
>>>> -LICHT01X, then also from senders whose reply contains it.
>>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>>
>>>
>>>
>>> --
>>> Regards,
>>> K. Gabriele
>>>
>>> --- unchanged since 25/1/10 ---
>>> P.S. Unless a notification (LON), please reply either with an answer
>>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>>> might resend.
>>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>>
>>> Also note that correspondence may be received only from specified a
>>> priori senders, or if the subject of this email ends with a code, eg.
>>> -LICHT01X, then also from senders whose reply contains it.
>>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>>
>>
>>
>> --
>> Regards,
>> K. Gabriele
>>
>> --- unchanged since 25/1/10 ---
>> P.S. Unless a notification (LON), please reply either with an answer
>> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
>> might resend.
>> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
>> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
>> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>>
>> Also note that correspondence may be received only from specified a
>> priori senders, or if the subject of this email ends with a code, eg.
>> -LICHT01X, then also from senders whose reply contains it.
>> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
>> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>>
>
>
> --
> Regards,
> K. Gabriele
>
> --- unchanged since 25/1/10 ---
> P.S. Unless a notification (LON), please reply either with an answer
> OR with " ACK" appended to this subject within 48 hours. Otherwise, I
> might resend.
> In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
> this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
> ¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).
>
> Also note that correspondence may be received only from specified a
> priori senders, or if the subject of this email ends with a code, eg.
> -LICHT01X, then also from senders whose reply contains it.
> ∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
> In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).
>


-- 
Regards,
K. Gabriele

--- unchanged since 25/1/10 ---
P.S. Unless a notification (LON), please reply either with an answer
OR with " ACK" appended to this subject within 48 hours. Otherwise, I
might resend.
In(LON, this) ∨ In(48h, TimeNow) ∨ ∃x. In(x, MyInbox) ∧ IsAnswerTo(x,
this) ∨ (In(subject(this), subject(x)) ∧ In(ACK, subject(x)) ∧
¬IsAnswerTo(x,this)) ⇒ ¬IResend(this).

Also note that correspondence may be received only from specified a
priori senders, or if the subject of this email ends with a code, eg.
-LICHT01X, then also from senders whose reply contains it.
∀x. In(x, MyInbox) ⇒ In(senderAddress(x), MySafeSenderList) ∨ (∃y.
In(y, subject(this) ) ∧ In(y,x) ∧ isCodeLike(y, -LICHT01X) ).

Mime
View raw message