You are viewing a plain text version of this content. The canonical link for it is here.
Posted to olio-commits@incubator.apache.org by sh...@apache.org on 2009/03/11 21:44:29 UTC

svn commit: r752637 - /incubator/olio/workload/rails/trunk/src/org/apache/olio/workload/fsloader/FileLoader.java

Author: shanti
Date: Wed Mar 11 21:44:28 2009
New Revision: 752637

URL: http://svn.apache.org/viewvc?rev=752637&view=rev
Log:
Fixes for OLIO-66, OLIO-68, OLIO-60
OLIO-60 still needs further fixes to the dbloader. 
All fixes were done by simply copying over the php file loader code.

Modified:
    incubator/olio/workload/rails/trunk/src/org/apache/olio/workload/fsloader/FileLoader.java

Modified: incubator/olio/workload/rails/trunk/src/org/apache/olio/workload/fsloader/FileLoader.java
URL: http://svn.apache.org/viewvc/incubator/olio/workload/rails/trunk/src/org/apache/olio/workload/fsloader/FileLoader.java?rev=752637&r1=752636&r2=752637&view=diff
==============================================================================
--- incubator/olio/workload/rails/trunk/src/org/apache/olio/workload/fsloader/FileLoader.java (original)
+++ incubator/olio/workload/rails/trunk/src/org/apache/olio/workload/fsloader/FileLoader.java Wed Mar 11 21:44:28 2009
@@ -16,23 +16,79 @@
  * limitations under the License.
  * 
  */
+
 package org.apache.olio.workload.fsloader;
 
 import org.apache.olio.workload.util.ScaleFactors;
 
-import java.nio.channels.FileChannel;
-import java.io.FileInputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.util.Formatter;
+import java.util.ArrayList;
+import java.util.logging.Level;
+import java.util.logging.Logger;
 
 
 public class FileLoader {
 
+    private static Logger logger = Logger.getLogger(FileLoader.class.getName());
+
     public static void main(String[] args) throws Exception {
         String srcDir = args[0];
-        ScaleFactors.setActiveUsers(Integer.parseInt(args[1]));
+        String destDir = args[1];
+        ScaleFactors.setActiveUsers(Integer.parseInt(args[2]));
         srcDir += File.separator;
+
+        // Clear the dest dir
+        File dest = new File(destDir);
+        if (!dest.isDirectory()) {
+            logger.severe(destDir + " Not a directory!");
+            System.exit(1);
+        }
+
+        logger.info("Deleting files in " + destDir);
+        File[] list = dest.listFiles();
+        for (File f : list) {
+            String name = f.getName();
+            boolean delete = false;
+            if (name.endsWith(".jpg"))
+                delete = true;
+            else if (name.endsWith(".JPG"))
+                delete = true;
+            else if (name.endsWith(".pdf"))
+                delete = true;
+            else if (name.endsWith(".PDF"))
+                delete = true;
+            if (delete && !f.delete())
+                logger.warning("Error deleting file " + f.getName());
+        }
+
+        ArrayList<LoaderThread> loaders = new ArrayList<LoaderThread>();
+
+        loaders.add(new LoaderThread(srcDir + "person.jpg",
+                destDir + File.separator + "p%d.jpg", ScaleFactors.users));
+        loaders.add(new LoaderThread(srcDir + "person_thumb.jpg",
+                destDir + File.separator + "p%dt.jpg", ScaleFactors.users));
+        loaders.add(new LoaderThread(srcDir + "event.jpg",
+                destDir + File.separator + "e%d.jpg", ScaleFactors.events));
+        loaders.add(new LoaderThread(srcDir + "event_thumb.jpg",
+                destDir + File.separator + "e%dt.jpg", ScaleFactors.events));
+        loaders.add(new LoaderThread(srcDir + "event.pdf",
+                destDir + File.separator + "e%d.pdf", ScaleFactors.events));
+
+        for (LoaderThread loader : loaders) {
+            loader.join();
+        }
+
+        for (LoaderThread loader : loaders) {
+            loader.close();
+        }
+
+        System.exit(0);
+/*
         FileChannel img = new FileInputStream(
                                     srcDir + "person.jpg").getChannel();
         FileChannel thumb = new FileInputStream(
@@ -40,16 +96,18 @@
         long imgSize = img.size();
         long thumbSize = thumb.size();
 
+        logger.info("Loading user images...");
         for (int i = 1; i <= ScaleFactors.users; i++) {
-            System.out.println("Loading files for user " + i);
-            copyTo(img, imgSize, "p" + i + ".jpg");
-            copyTo(thumb, thumbSize, "p" + i + "_thumb.jpg");
+            logger.finer("Loading files for user " + i);
+            copyTo(img, imgSize, destDir + File.separator + "p" + i + ".jpg");
+            copyTo(thumb, thumbSize,
+                    destDir + File.separator + "p" + i + "t.jpg");
         }
 
         img.close();
         thumb.close();
 
-
+        logger.info("Loading event images and files...");
         img = new FileInputStream(srcDir + "event.jpg").getChannel();
         thumb = new FileInputStream(srcDir + "event_thumb.jpg").getChannel();
         FileChannel lit = new FileInputStream(
@@ -60,22 +118,67 @@
         long litSize = lit.size();
 
         for (int i = 1; i <= ScaleFactors.events; i++) {
-            System.out.println("Loading files for event " + i);
-            copyTo(img, imgSize, "e" + i + ".jpg");
-            copyTo(thumb, thumbSize, "e" + i + "_thumb.jpg");
-            copyTo(lit, litSize, "e" + i + ".pdf");
+            logger.finer("Loading files for event " + i);
+            copyTo(img, imgSize, destDir + File.separator + "e" + i + ".jpg");
+            copyTo(thumb, thumbSize,
+                    destDir + File.separator + "e" + i + "t.jpg");
+            copyTo(lit, litSize, destDir + File.separator + "e" + i + ".pdf");
         }
 
         img.close();
         thumb.close();
         lit.close();
         System.exit(0);
+*/
     }
 
+    /*
     private static void copyTo(FileChannel src, long size, String destFile)
             throws IOException {
         FileChannel dest = (new FileOutputStream(destFile)).getChannel();
         src.transferTo(0, size, dest);
         dest.close();
     }
+    */
+
+    static class LoaderThread extends Thread {
+
+        FileChannel src;
+        int count;
+        long size;
+        String pattern;
+        Formatter format;
+
+        public LoaderThread(String src, String destPattern, int count)
+                throws IOException {
+            this.src = new FileInputStream(src).getChannel();
+            size = this.src.size();
+            this.count = count;
+            this.pattern = destPattern;
+            format = new Formatter();
+            start();
+        }
+
+        public void run() {
+            for (int i = 1; i <= count; i++) {
+                String dest = format.format(pattern, i).toString();
+                if (i % 1000 == 0) {
+                    logger.info("Copying to " + dest);
+                }
+                ((StringBuilder) format.out()).setLength(0);
+                try {
+                    FileChannel destChannel = new FileOutputStream(dest).
+                                                            getChannel();
+                    src.transferTo(0, size, destChannel);
+                    destChannel.close();
+                } catch (IOException e) {
+                    logger.log(Level.WARNING, "Error writing file " + dest, e);
+                }
+            }
+        }
+
+        public void close() throws IOException {
+            src.close();
+        }
+    }
 }