-/*******************************************************************************\r
- * Copyright (c) 2010- Association for Decentralized Information Management in\r
- * Industry THTH ry.\r
- * All rights reserved. This program and the accompanying materials\r
- * are made available under the terms of the Eclipse Public License v1.0\r
- * which accompanies this distribution, and is available at\r
- * http://www.eclipse.org/legal/epl-v10.html\r
- * \r
- * Contributors:\r
- * VTT Technical Research Centre of Finland - initial API and implementation\r
- *******************************************************************************/\r
-package org.simantics.databoard.tests;\r
-\r
-import java.io.File;\r
-import java.io.FileFilter;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import java.util.Random;\r
-\r
-import junit.framework.TestCase;\r
-\r
-import org.simantics.databoard.accessor.impl.DirectoryWatch;\r
-import org.simantics.databoard.accessor.impl.DirectoryWatch.DirectoryEvent;\r
-import org.simantics.databoard.accessor.impl.DirectoryWatch.DirectoryListener;\r
-\r
-/**\r
- * This test case tests Wathc Servlet.\r
- * \r
- * It creates a random named directory under $TMP$\r
- * There it \r
- *\r
- * @author Toni Kalajainen <toni.kalajainen@vtt.fi>\r
- */\r
-public class TestDirectoryWatch extends TestCase {\r
-\r
- File tmpDir;\r
- \r
- public static File createTmpDir()\r
- {\r
- String tmp = System.getenv("tmp");\r
- if (tmp==null) tmp = "c:/temp";\r
- Random r = new Random();\r
- String randomName = "tmp-"+(r.nextInt(10000)+10000);\r
- File tmpDir = new File(tmp+"/"+randomName);\r
- Boolean ok = tmpDir.mkdirs();\r
- assertTrue( ok );\r
- return tmpDir;\r
- }\r
- \r
- public void setUp() throws Exception {\r
- tmpDir = createTmpDir();\r
- }\r
- \r
- @Override\r
- protected void tearDown() throws Exception {\r
- boolean ok = tmpDir.delete();\r
- if (!ok) System.err.println(tmpDir+" was not removed.");\r
- } \r
- \r
- public void testAll() \r
- throws Exception {\r
- \r
- FileFilter filter = new FileFilter() {\r
- public boolean accept(File pathname) { \r
- return pathname.getAbsolutePath().toLowerCase().endsWith(".dbb");\r
- }};\r
- \r
- DirectoryWatch monitor = new DirectoryWatch(tmpDir, filter);\r
- \r
- final DirectoryEvent result = new DirectoryEvent();\r
- \r
- // Set listener that collects changes\r
- monitor.addListener(new DirectoryListener() {\r
- @Override\r
- public void onWatchEvent(DirectoryEvent e) {\r
- result.filesAdded.addAll(e.filesAdded);\r
- result.filesRemoved.addAll(e.filesRemoved);\r
- }});\r
-\r
- // Create file names\r
- List<File> files = new ArrayList<File>();\r
- for (int i=1; i<10; i++) {\r
- files.add( new File(tmpDir, "file-"+i+".dbb") );\r
- }\r
- \r
- // Create files\r
- for (File f : files)\r
- {\r
- f.createNewFile();\r
- } \r
- Thread.sleep( DirectoryWatch.POLL_INTERVAL*2 ); \r
- assertTrue( files.containsAll( result.filesAdded ) );\r
- assertTrue( result.filesAdded.containsAll( files ) );\r
- assertTrue( result.filesRemoved.isEmpty() ); \r
- result.filesAdded.clear();\r
- \r
- // Delete files\r
- for (File f : files)\r
- f.delete();\r
- Thread.sleep( DirectoryWatch.POLL_INTERVAL*2 ); \r
- assertTrue( files.containsAll( result.filesRemoved ) );\r
- assertTrue( result.filesRemoved.containsAll( files ) );\r
- assertTrue( result.filesAdded.isEmpty() ); \r
- result.filesRemoved.clear();\r
- \r
- monitor.close(); \r
- }\r
- \r
-}\r
-\r
+/*******************************************************************************
+ * Copyright (c) 2010- Association for Decentralized Information Management in
+ * Industry THTH ry.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * VTT Technical Research Centre of Finland - initial API and implementation
+ *******************************************************************************/
+package org.simantics.databoard.tests;
+
+import java.io.File;
+import java.io.FileFilter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+import junit.framework.TestCase;
+
+import org.simantics.databoard.accessor.impl.DirectoryWatch;
+import org.simantics.databoard.accessor.impl.DirectoryWatch.DirectoryEvent;
+import org.simantics.databoard.accessor.impl.DirectoryWatch.DirectoryListener;
+
+/**
+ * This test case tests Wathc Servlet.
+ *
+ * It creates a random named directory under $TMP$
+ * There it
+ *
+ * @author Toni Kalajainen <toni.kalajainen@vtt.fi>
+ */
+public class TestDirectoryWatch extends TestCase {
+
+ File tmpDir;
+
+ public static File createTmpDir()
+ {
+ String tmp = System.getenv("tmp");
+ if (tmp==null) tmp = "c:/temp";
+ Random r = new Random();
+ String randomName = "tmp-"+(r.nextInt(10000)+10000);
+ File tmpDir = new File(tmp+"/"+randomName);
+ Boolean ok = tmpDir.mkdirs();
+ assertTrue( ok );
+ return tmpDir;
+ }
+
+ public void setUp() throws Exception {
+ tmpDir = createTmpDir();
+ }
+
+ @Override
+ protected void tearDown() throws Exception {
+ boolean ok = tmpDir.delete();
+ if (!ok) System.err.println(tmpDir+" was not removed.");
+ }
+
+ public void testAll()
+ throws Exception {
+
+ FileFilter filter = new FileFilter() {
+ public boolean accept(File pathname) {
+ return pathname.getAbsolutePath().toLowerCase().endsWith(".dbb");
+ }};
+
+ DirectoryWatch monitor = new DirectoryWatch(tmpDir, filter);
+
+ final DirectoryEvent result = new DirectoryEvent();
+
+ // Set listener that collects changes
+ monitor.addListener(new DirectoryListener() {
+ @Override
+ public void onWatchEvent(DirectoryEvent e) {
+ result.filesAdded.addAll(e.filesAdded);
+ result.filesRemoved.addAll(e.filesRemoved);
+ }});
+
+ // Create file names
+ List<File> files = new ArrayList<File>();
+ for (int i=1; i<10; i++) {
+ files.add( new File(tmpDir, "file-"+i+".dbb") );
+ }
+
+ // Create files
+ for (File f : files)
+ {
+ f.createNewFile();
+ }
+ Thread.sleep( DirectoryWatch.POLL_INTERVAL*2 );
+ assertTrue( files.containsAll( result.filesAdded ) );
+ assertTrue( result.filesAdded.containsAll( files ) );
+ assertTrue( result.filesRemoved.isEmpty() );
+ result.filesAdded.clear();
+
+ // Delete files
+ for (File f : files)
+ f.delete();
+ Thread.sleep( DirectoryWatch.POLL_INTERVAL*2 );
+ assertTrue( files.containsAll( result.filesRemoved ) );
+ assertTrue( result.filesRemoved.containsAll( files ) );
+ assertTrue( result.filesAdded.isEmpty() );
+ result.filesRemoved.clear();
+
+ monitor.close();
+ }
+
+}
+