1 10 package org.mmbase.module.builders.vwms; 11 12 import java.util.*; 13 14 import org.mmbase.util.Queue; 15 import org.mmbase.util.logging.*; 16 17 30 public class ImagePusher implements Runnable { 31 32 private static final Logger log = Logging.getLoggerInstance(ImagePusher.class); 33 34 38 Thread kicker = null; 39 42 int sleepTime=4444; 43 47 ImageMaster parent; 48 49 52 Queue files2copy=new Queue(128); 53 54 57 FileCopier filecopier=new FileCopier(files2copy); 58 59 63 public ImagePusher(ImageMaster parent) { 64 this.parent=parent; 65 init(); 66 } 67 68 71 public void init() { 72 this.start(); 73 } 74 75 76 79 public void start() { 80 81 if (kicker == null) { 82 kicker = new Thread (this,"Image"); 83 kicker.setDaemon(true); 84 kicker.start(); 85 } 86 } 87 88 91 public void stop() { 92 93 kicker = null; 94 } 95 96 99 public void run () { 100 if (kicker!=null) { 101 try { 102 doWork(); 103 } catch(Exception e) { 104 e.printStackTrace(); 105 } 106 } 107 } 108 109 116 public void doWork() { 117 Vector procfiles; 118 aFile2Copy file; 119 Hashtable files; 120 121 log.info("ImagePusher Active"); 122 while (kicker!=null) { 123 try { Thread.sleep(sleepTime); } catch (InterruptedException e) {} 124 if (parent.files.size()>0) { 125 synchronized(parent.files) { 126 procfiles=parent.files; 127 parent.files=new Vector(); 128 } 129 log.service("ImagePusher processing "+procfiles.size()+" files"); 130 files=killdups(procfiles); 131 for (Enumeration e =files.keys();e.hasMoreElements();) { 132 file=(aFile2Copy)e.nextElement(); 133 files2copy.append(file); 134 } 135 } 136 } 137 } 138 139 145 private Hashtable killdups(Vector files) { 146 Hashtable hfiles=new Hashtable(files.size()); 147 aFile2Copy file; 148 for (Enumeration e=files.elements();e.hasMoreElements();) { 149 file=(aFile2Copy)e.nextElement(); 150 hfiles.put(file,"feep"); 151 } 152 log.info("ImagePusher -> "+files.size()+" - "+hfiles.size()+" dups "+(files.size()-hfiles.size())); 153 return hfiles; 154 } 155 } 156 | Popular Tags |