Example usage for org.apache.commons.vfs2.impl StandardFileSystemManager StandardFileSystemManager

List of usage examples for org.apache.commons.vfs2.impl StandardFileSystemManager StandardFileSystemManager

Introduction

In this page you can find the example usage for org.apache.commons.vfs2.impl StandardFileSystemManager StandardFileSystemManager.

Prototype

StandardFileSystemManager

Source Link

Usage

From source file:com.web.server.EJBDeployer.java

@Override
public void run() {
    EJBJarFileListener jarFileListener = new EJBJarFileListener(registry, this.servicesRegistryPort, jarEJBMap,
            jarMDBMap, jms, connectionFactory);
    DefaultFileMonitor fm = new DefaultFileMonitor(jarFileListener);
    FileObject listendir = null;/*from  w  ww  .  j av a2 s  .com*/
    StandardFileSystemManager fsManager = new StandardFileSystemManager();
    String[] dirsToScan = scanDirectory.split(";");
    EJBContext ejbContext;
    try {
        File scanDirFile = new File(dirsToScan[0]);
        File[] scanJarFiles = scanDirFile.listFiles();
        System.out.println("SCANDIRECTORY=" + scanDirectory);
        if (scanJarFiles != null) {
            for (File scanJarFile : scanJarFiles) {
                if (scanJarFile.isFile() && scanJarFile.getAbsolutePath().endsWith(".jar")) {
                    URLClassLoader classLoader = new URLClassLoader(
                            new URL[] { new URL("file:///" + scanJarFile.getAbsolutePath()) },
                            Thread.currentThread().getContextClassLoader());
                    ConfigurationBuilder config = new ConfigurationBuilder();
                    config.addUrls(ClasspathHelper.forClassLoader(classLoader));
                    config.addClassLoader(classLoader);
                    org.reflections.Reflections reflections = new org.reflections.Reflections(config);
                    EJBContainer container = EJBContainer
                            .getInstance("file:///" + scanJarFile.getAbsolutePath(), config);
                    container.inject();
                    Set<Class<?>> cls = reflections.getTypesAnnotatedWith(Stateless.class);
                    Set<Class<?>> clsMessageDriven = reflections.getTypesAnnotatedWith(MessageDriven.class);
                    Object obj;
                    System.gc();
                    if (cls.size() > 0) {
                        ejbContext = new EJBContext();
                        ejbContext.setJarPath(scanJarFile.getAbsolutePath());
                        ejbContext.setJarDeployed(scanJarFile.getName());
                        for (Class<?> ejbInterface : cls) {
                            //BeanPool.getInstance().create(ejbInterface);
                            obj = BeanPool.getInstance().get(ejbInterface);
                            System.out.println(obj);
                            ProxyFactory factory = new ProxyFactory();
                            obj = UnicastRemoteObject.exportObject((Remote) factory.createWithBean(obj),
                                    servicesRegistryPort);
                            String remoteBinding = container.getRemoteBinding(ejbInterface);
                            System.out.println(remoteBinding + " for EJB" + obj);
                            if (remoteBinding != null) {
                                //registry.unbind(remoteBinding);
                                registry.rebind(remoteBinding, (Remote) obj);
                                ejbContext.put(remoteBinding, obj.getClass());
                            }
                            //registry.rebind("name", (Remote) obj);
                        }
                        jarEJBMap.put("file:///" + scanJarFile.getAbsolutePath().replace("\\", "/"),
                                ejbContext);
                    }
                    System.out.println("Class Message Driven" + clsMessageDriven);
                    if (clsMessageDriven.size() > 0) {
                        System.out.println("Class Message Driven");
                        MDBContext mdbContext;
                        ConcurrentHashMap<String, MDBContext> mdbContexts;
                        if (jarMDBMap.get(scanJarFile.getAbsolutePath()) != null) {
                            mdbContexts = jarMDBMap.get(scanJarFile.getAbsolutePath());
                        } else {
                            mdbContexts = new ConcurrentHashMap<String, MDBContext>();
                        }
                        jarMDBMap.put("file:///" + scanJarFile.getAbsolutePath().replace("\\", "/"),
                                mdbContexts);
                        MDBContext mdbContextOld;
                        for (Class<?> mdbBean : clsMessageDriven) {
                            String classwithpackage = mdbBean.getName();
                            System.out.println("class package" + classwithpackage);
                            classwithpackage = classwithpackage.replace("/", ".");
                            System.out.println("classList:" + classwithpackage.replace("/", "."));
                            try {
                                if (!classwithpackage.contains("$")) {
                                    //System.out.println("executor class in ExecutorServicesConstruct"+executorServiceClass);
                                    //System.out.println();
                                    if (!mdbBean.isInterface()) {
                                        Annotation[] classServicesAnnot = mdbBean.getDeclaredAnnotations();
                                        if (classServicesAnnot != null) {
                                            for (int annotcount = 0; annotcount < classServicesAnnot.length; annotcount++) {
                                                if (classServicesAnnot[annotcount] instanceof MessageDriven) {
                                                    MessageDriven messageDrivenAnnot = (MessageDriven) classServicesAnnot[annotcount];
                                                    ActivationConfigProperty[] activationConfigProperties = messageDrivenAnnot
                                                            .activationConfig();
                                                    mdbContext = new MDBContext();
                                                    mdbContext.setMdbName(messageDrivenAnnot.name());
                                                    for (ActivationConfigProperty activationConfigProperty : activationConfigProperties) {
                                                        if (activationConfigProperty.propertyName()
                                                                .equals(MDBContext.DESTINATIONTYPE)) {
                                                            mdbContext.setDestinationType(
                                                                    activationConfigProperty.propertyValue());
                                                        } else if (activationConfigProperty.propertyName()
                                                                .equals(MDBContext.DESTINATION)) {
                                                            mdbContext.setDestination(
                                                                    activationConfigProperty.propertyValue());
                                                        } else if (activationConfigProperty.propertyName()
                                                                .equals(MDBContext.ACKNOWLEDGEMODE)) {
                                                            mdbContext.setAcknowledgeMode(
                                                                    activationConfigProperty.propertyValue());
                                                        }
                                                    }
                                                    if (mdbContext.getDestinationType()
                                                            .equals(Queue.class.getName())) {
                                                        mdbContextOld = null;
                                                        if (mdbContexts.get(mdbContext.getMdbName()) != null) {
                                                            mdbContextOld = mdbContexts
                                                                    .get(mdbContext.getMdbName());
                                                            if (mdbContextOld != null
                                                                    && mdbContext.getDestination().equals(
                                                                            mdbContextOld.getDestination())) {
                                                                throw new Exception(
                                                                        "Only one MDB can listen to destination:"
                                                                                + mdbContextOld
                                                                                        .getDestination());
                                                            }
                                                        }
                                                        mdbContexts.put(mdbContext.getMdbName(), mdbContext);
                                                        Queue queue = (Queue) jms
                                                                .lookup(mdbContext.getDestination());
                                                        Connection connection = connectionFactory
                                                                .createConnection("guest", "guest");
                                                        connection.start();
                                                        Session session;
                                                        if (mdbContext.getAcknowledgeMode() != null
                                                                && mdbContext.getAcknowledgeMode()
                                                                        .equals("Auto-Acknowledge")) {
                                                            session = connection.createSession(false,
                                                                    Session.AUTO_ACKNOWLEDGE);
                                                        } else {
                                                            session = connection.createSession(false,
                                                                    Session.AUTO_ACKNOWLEDGE);
                                                        }
                                                        MessageConsumer consumer = session
                                                                .createConsumer(queue);
                                                        consumer.setMessageListener(
                                                                (MessageListener) mdbBean.newInstance());
                                                        mdbContext.setConnection(connection);
                                                        mdbContext.setSession(session);
                                                        mdbContext.setConsumer(consumer);
                                                        System.out.println("Queue=" + queue);
                                                    } else if (mdbContext.getDestinationType()
                                                            .equals(Topic.class.getName())) {
                                                        if (mdbContexts.get(mdbContext.getMdbName()) != null) {
                                                            mdbContextOld = mdbContexts
                                                                    .get(mdbContext.getMdbName());
                                                            if (mdbContextOld.getConsumer() != null)
                                                                mdbContextOld.getConsumer()
                                                                        .setMessageListener(null);
                                                            if (mdbContextOld.getSession() != null)
                                                                mdbContextOld.getSession().close();
                                                            if (mdbContextOld.getConnection() != null)
                                                                mdbContextOld.getConnection().close();
                                                        }
                                                        mdbContexts.put(mdbContext.getMdbName(), mdbContext);
                                                        Topic topic = (Topic) jms
                                                                .lookup(mdbContext.getDestination());
                                                        Connection connection = connectionFactory
                                                                .createConnection("guest", "guest");
                                                        connection.start();
                                                        Session session;
                                                        if (mdbContext.getAcknowledgeMode() != null
                                                                && mdbContext.getAcknowledgeMode()
                                                                        .equals("Auto-Acknowledge")) {
                                                            session = connection.createSession(false,
                                                                    Session.AUTO_ACKNOWLEDGE);
                                                        } else {
                                                            session = connection.createSession(false,
                                                                    Session.AUTO_ACKNOWLEDGE);
                                                        }
                                                        MessageConsumer consumer = session
                                                                .createConsumer(topic);
                                                        consumer.setMessageListener(
                                                                (MessageListener) mdbBean.newInstance());
                                                        mdbContext.setConnection(connection);
                                                        mdbContext.setSession(session);
                                                        mdbContext.setConsumer(consumer);
                                                        System.out.println("Topic=" + topic);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            } catch (Exception e) {
                                // TODO Auto-generated catch block
                                e.printStackTrace();
                            }
                        }
                    }
                    classLoader.close();
                    System.out.println(scanJarFile.getAbsolutePath() + " Deployed");
                }
            }
        }
        FileSystemOptions opts = new FileSystemOptions();
        FtpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(opts, true);
        fsManager.init();
        for (String dir : dirsToScan) {
            if (dir.startsWith("ftp://")) {
                listendir = fsManager.resolveFile(dir, opts);
            } else {
                listendir = fsManager.resolveFile(dir);
            }
            fm.addFile(listendir);
        }
    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    fm.setRecursive(true);
    fm.setDelay(1000);
    fm.start();
}

From source file:com.app.server.EARDeployer.java

public void init(Vector serviceList, ServerConfig serverConfig, MBeanServer mbeanServer) {
    this.serviceList = serviceList;
    this.serverConfig = serverConfig;
    this.mbeanServer = mbeanServer;
    this.registry = registry;
    fsManager = new StandardFileSystemManager();
    try {/*from w  w  w. j  a  va2  s .com*/
        warObjectName = new ObjectName("com.app.server:type=deployer,service=WARDeployer");
        ejbObjectName = new ObjectName("com.app.server:type=deployer,service=EJBDeployer");
        sarObjectName = new ObjectName("com.app.server:type=deployer,service=SARDeployer");
        rarObjectName = new ObjectName("com.app.server:type=deployer,service=RARDeployer");
        ezbObjectName = new ObjectName("com.app.server:type=deployer,service=EZBeansDeployer");
        this.executorServiceMap = (Hashtable) mbeanServer.getAttribute(warObjectName, "ExecutorServiceMap");
        this.urlClassLoaderMap = (Hashtable) mbeanServer.getAttribute(warObjectName, "UrlClassLoaderMap");
        System.setProperty("java.io.tmpdir", serverConfig.getCachedir());
        /*DefaultFileReplicator replicator = new DefaultFileReplicator(new File(cacheDir));
        //fsManager.setReplicator(new PrivilegedFileReplicator(replicator));
        fsManager.setTemporaryFileStore(replicator);*/
        fsManager.init();
    } catch (Exception e) {
        log.error("Error in initialization", e);
        // TODO Auto-generated catch block
        //e3.printStackTrace();
    }
}

From source file:com.web.server.EARDeployer.java

public void run() {
    StandardFileSystemManager fsManager = null;
    fsManager = new StandardFileSystemManager();
    try {/*  w  w w .j a  v  a2  s .c  o  m*/
        System.setProperty("java.io.tmpdir", this.cacheDir);
        /*DefaultFileReplicator replicator = new DefaultFileReplicator(new File(cacheDir));
        //fsManager.setReplicator(new PrivilegedFileReplicator(replicator));
        fsManager.setTemporaryFileStore(replicator);*/
        fsManager.init();
    } catch (FileSystemException e3) {
        // TODO Auto-generated catch block
        e3.printStackTrace();
    }
    // fsManager.addProvider("file", new JarFileProvider());
    File file = new File(scanDirectory);
    File[] files = file.listFiles();
    CopyOnWriteArrayList<String> classList;
    ConcurrentHashMap jarClassListMap = new ConcurrentHashMap();
    task = new EARFileListener(executorServiceMap, urlClassLoaderMap, earsDeployed);
    for (int i = 0; i < files.length; i++) {
        if (files[i].isDirectory())
            continue;
        // Long lastModified=(Long) fileMap.get(files[i].getName());
        if (files[i].getName().endsWith(".ear")) {
            String filePath = files[i].getAbsolutePath();
            com.web.server.util.FileUtil util = new com.web.server.util.FileUtil();
            FileObject earFile = null;
            try {
                System.out.println("Before resolve file");
                System.out.println("jar:file:///" + filePath);
                earFile = fsManager.resolveFile("jar:file:///" + scanDirectory + "/" + files[i].getName());
                System.out.println("After resolve file");
            } catch (FileSystemException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            }
            try {
                deleteExecutorServicesEar(files[i].getName(), fsManager);
                deployExecutorServicesEar(files[i].getName(), earFile, fsManager);
                numberOfEarsDeployed++;
                log.info("deployed Ear:" + files[i].getName());
            } catch (Exception ex) {
                // TODO Auto-generated catch block
                log.info("Could not deploy Ear:" + file.getName(), ex);
                //e.printStackTrace();
            }
            // logger.info("filePath"+filePath);
            /*filePath = filePath.substring(0, filePath.toLowerCase()
                  .lastIndexOf(".ear"));
            VFSClassLoader customClassLoader = null;
            try {
               CopyOnWriteArrayList<FileObject> fileObjects = new CopyOnWriteArrayList<FileObject>();
               System.out.println("EARFILE:/   \n\n\n\n\n\n\n\n\n\n"
             + earFile);
               obtainUrls(earFile, earFile, fileObjects, jarClassListMap,
             fsManager);
               System.out.println(fileObjects);
               System.out.println(jarClassListMap);
               VFSClassLoader customClassLoaderBaseLib = new VFSClassLoader(
             fileObjects.toArray(new FileObject[fileObjects
                   .size()]), fsManager, Thread
                   .currentThread().getContextClassLoader());
               // customClassLoader.loadClass(classList.get(0).toString());
                    
               Set keys = jarClassListMap.keySet();
               Iterator key = keys.iterator();
               for (int keyCount = 0; keyCount < keys.size(); keyCount++) {
                  FileObject jarFileObject = (FileObject) key.next();
                  classList = (CopyOnWriteArrayList<String>) jarClassListMap
                .get(jarFileObject);
                  for (int classCount = 0; classCount < classList.size(); classCount++) {
             String classwithpackage = classList.get(classCount)
                   .substring(
                         0,
                         classList.get(classCount).indexOf(
                               ".class"));
             classwithpackage = classwithpackage.replace("/",
                   ".");
             System.out.println("classList:"
                   + classwithpackage.replace("/", "."));
             try {
                if (!classwithpackage.contains("$")) {
                   customClassLoader = new VFSClassLoader(
                         jarFileObject, fsManager,
                         customClassLoaderBaseLib);
                   this.urlClassLoaderMap.put(scanDirectory
                         + "/"
                         + files[i].getName()
                         + "/"
                         + jarFileObject.getName()
                               .getBaseName(),
                         customClassLoader);
                   Class executorServiceClass = customClassLoader
                         .loadClass(classwithpackage);
                   System.out.println(executorServiceClass
                         .newInstance());
                   // System.out.println("executor class in ExecutorServicesConstruct"+executorServiceClass);
                   // System.out.println();
                   Method[] methods = executorServiceClass
                         .getMethods();
                   for (Method method : methods) {
                      Annotation[] annotations = method
                            .getDeclaredAnnotations();
                      for (Annotation annotation : annotations) {
                         if (annotation instanceof ExecutorServiceAnnot) {
                            ExecutorServiceAnnot executorServiceAnnot = (ExecutorServiceAnnot) annotation;
                            ExecutorServiceInfo executorServiceInfo = new ExecutorServiceInfo();
                            executorServiceInfo
                                  .setExecutorServicesClass(executorServiceClass);
                            executorServiceInfo
                                  .setMethod(method);
                            executorServiceInfo
                                  .setMethodParams(method
                                        .getParameterTypes());
                            // System.out.println("method="+executorServiceAnnot.servicename());
                            // System.out.println("method info="+executorServiceInfo);
                            // if(servicesMap.get(executorServiceAnnot.servicename())==null)throw
                            // new Exception();
                            executorServiceMap.put(
                                  executorServiceAnnot
                                        .servicename(),
                                  executorServiceInfo);
                         }
                      }
                   }
                    
                }
             } catch (ClassNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             } catch (InstantiationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             } catch (IllegalAccessException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
             }
                  }
                  jarFileObject.close();
               }
               for (FileObject fobject : fileObjects) {
                  fobject.close();
               }
            } catch (FileSystemException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }
            try {
               earFile.close();
               fsManager.closeFileSystem(earFile.getFileSystem());
            } catch (FileSystemException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
            }*/
        }
    }
    //fsManager.close();
    if (exec == null) {
        exec = Executors.newSingleThreadScheduledExecutor();
        exec.scheduleAtFixedRate(task, 0, 1000, TimeUnit.MILLISECONDS);
    }
}

From source file:com.app.server.EJBDeployer.java

public void init(Vector serviceList, ServerConfig serverConfig, MBeanServer mbeanServer) {
    this.serviceList = serviceList;
    this.serverConfig = serverConfig;
    this.mbeanServer = mbeanServer;
    this.serviceRegistryPort = Integer.parseInt(serverConfig.getServicesregistryport());
    //System.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.rmi.registry.RegistryContextFactory");
    //System.setProperty(Context.PROVIDER_URL, "rmi://localhost:"+serverConfig.getServicesregistryport());;
    try {//  w w  w. j a v a  2  s. c  om
        fsManager = new StandardFileSystemManager();
        System.setProperty("java.io.tmpdir", serverConfig.getCachedir());
        /*DefaultFileReplicator replicator = new DefaultFileReplicator(new File(cacheDir));
        //fsManager.setReplicator(new PrivilegedFileReplicator(replicator));
        fsManager.setTemporaryFileStore(replicator);*/
        fsManager.init();
        registry = LocateRegistry.createRegistry(Integer.parseInt(serverConfig.getServicesregistryport()));
        try {
            ic = new InitialContext();
            Context subctx = null;
            try {
                subctx = (Context) ic.lookup("java:");
            } catch (Exception ex) {
                log.error("Error in getting the java context", ex);
                //ex.printStackTrace();
            }
            if (subctx == null) {
                ic.createSubcontext("java:");
            }
            remoteBindingInterface = new RemoteBindingObject(ic);
            Object jndilookupobj = UnicastRemoteObject.exportObject((Remote) remoteBindingInterface,
                    this.serviceRegistryPort);
            //registry.rebind("RemoteBindingObject", (Remote) jndilookupobj);
        } catch (Exception ex) {
            log.error("error in registring to the remote binding object", ex);
            //e1.printStackTrace();
        }
        this.jms = new EmbeddedJMS();
        this.jms.start();

    } catch (Exception e) {
        log.error("error in initialization", e);
        // TODO Auto-generated catch block
        //e.printStackTrace();
    }
    connectionFactory = (ConnectionFactory) jms.lookup("java:/ConnectionFactory");
    log.info("initialized");
}

From source file:com.yenlo.synapse.transport.vfs.VFSTransportListener.java

@Override
protected void doInit() throws AxisFault {
    super.doInit();
    try {/*from  ww w. j  a v  a2  s.com*/
        StandardFileSystemManager fsm = new StandardFileSystemManager();
        fsm.setConfiguration(getClass().getClassLoader().getResource("providers.xml"));
        fsm.init();
        this.workerPool = super.workerPool;
        fsManager = fsm;
        Parameter lockFlagParam = getTransportInDescription().getParameter(VFSConstants.TRANSPORT_FILE_LOCKING);
        if (lockFlagParam != null) {
            String strLockingFlag = lockFlagParam.getValue().toString();
            // by-default enabled, if explicitly specified as "disable" make it disable
            if (VFSConstants.TRANSPORT_FILE_LOCKING_DISABLED.equals(strLockingFlag)) {
                globalFileLockingFlag = false;
            }
        }
    } catch (FileSystemException e) {
        handleException("Error initializing the file transport : " + e.getMessage(), e);
    }
}

From source file:erigo.filepump.FilePumpWorker.java

public void run() {

    String output_dir_name = pumpSettings.getOutputFolder();
    double files_per_sec = pumpSettings.getFilesPerSec();
    int total_num_files = pumpSettings.getTotNumFiles();
    FilePumpSettings.FileMode mode = pumpSettings.getMode();
    String ftpHost = pumpSettings.getFTPHost();
    String ftpUsername = pumpSettings.getFTPUser();
    String ftpPassword = pumpSettings.getFTPPassword();

    double desired_period = 1 / files_per_sec;
    double sleep_time_millis = desired_period * 1000;
    long time_used_in_last_filename = 0;
    Random random_generator = new Random();
    int random_range = 999999;

    if (mode == FilePumpSettings.FileMode.LOCAL_FILESYSTEM) {
        if (bJustWriteEndFile) {
            System.err.println("\nWrite \"end.txt\" file to " + output_dir_name);
        } else {//w  w  w.  ja  v a 2s.  c om
            System.err.println("\nWrite files to " + output_dir_name);
        }
    } else if (mode == FilePumpSettings.FileMode.FTP) {
        ftpClient = new FTPClient();
        try {
            login(ftpHost, ftpUsername, ftpPassword);
        } catch (Exception e) {
            System.err.println("Caught exception connecting to FTP server:\n" + e);
            return;
        }
        // Make sure we are only using "/" in output_dir_name
        output_dir_name = output_dir_name.replace('\\', '/');
        if (bJustWriteEndFile) {
            System.err.println("\nWrite \"end.txt\" file out using FTP: host = " + ftpHost + ", username = "
                    + ftpUsername + ", folder = " + output_dir_name);
        } else {
            System.err.println("\nFTP files: host = " + ftpHost + ", username = " + ftpUsername + ", folder = "
                    + output_dir_name);
        }
    } else if (mode == FilePumpSettings.FileMode.SFTP) {
        // Make sure output_dir_name starts with an "/"
        if (output_dir_name.charAt(0) != '/') {
            output_dir_name = "/" + output_dir_name;
        }
        manager = new StandardFileSystemManager();
        try {
            manager.init();
            // Just use the default logger
            // manager.setTemporaryFileStore(new DefaultFileReplicator(new File("C:\\TEMP")));
            // Code to set SFTP configuration is largely copied from a submission to the following Stack Overflow post:
            // https://stackoverflow.com/questions/44763915/how-to-skip-password-prompt-during-sftp-using-commons-vfs
            // Sample author: Som, https://stackoverflow.com/users/6416340/som
            // License: Stack Overflow content is covered by the Creative Commons license, https://creativecommons.org/licenses/by-sa/3.0/legalcode
            // Setup our SFTP configuration
            fileSystemOptions = new FileSystemOptions();
            SftpFileSystemConfigBuilder.getInstance().setStrictHostKeyChecking(fileSystemOptions, "no");
            // VFS file system root:
            // setting this parameter false = cause VFS to choose File System's Root as VFS's root
            // setting this parameter true = cause VFS to choose user's home directory as VFS's root
            SftpFileSystemConfigBuilder.getInstance().setUserDirIsRoot(fileSystemOptions, true);
            SftpFileSystemConfigBuilder.getInstance().setTimeout(fileSystemOptions, 10000);
            // The following line was used by the Stack Overflow post author to be able to skip a credentials prompt
            // SftpFileSystemConfigBuilder.getInstance().setPreferredAuthentications(fileSystemOptions, "publickey,keyboard-interactive,password");
        } catch (Exception e) {
            System.err.println("Caught exception setting up Apache Commons VFS manager for SFTP:\n" + e);
            e.printStackTrace();
            return;
        }
        // Make sure we are only using "/" in output_dir_name
        output_dir_name = output_dir_name.replace('\\', '/');
        // Create the base connection String
        // For example, for username "fooUser" and password "fooPW" trying to connect to 192.168.2.56 and put files in folder FooFolder:
        //     sftp://fooUser:fooPW@192.168.2.56/FooFolder
        // Note that up above we made sure that output_dir_name starts with "/"
        baseConnectionStr = "sftp://" + ftpUsername + ":" + ftpPassword + "@" + ftpHost + output_dir_name;
        if (bJustWriteEndFile) {
            System.err.println("\nWrite \"end.txt\" file out using SFTP: host = " + ftpHost + ", username = "
                    + ftpUsername + ", folder = " + output_dir_name);
        } else {
            System.err.println("\nSFTP files: host = " + ftpHost + ", username = " + ftpUsername + ", folder = "
                    + output_dir_name);
        }
    }

    //
    // If out only task is to send an end.txt file, go ahead and do it and then return
    //
    if (bJustWriteEndFile) {
        String filename = "end.txt";
        if (mode == FilePumpSettings.FileMode.FTP) {
            writeToFTP(output_dir_name, filename, 1);
        } else if (mode == FilePumpSettings.FileMode.SFTP) {
            writeToSFTP(filename, 1);
        } else {
            File full_filename = new File(output_dir_name, filename);
            FileWriter fw;
            try {
                fw = new FileWriter(full_filename, false);
            } catch (IOException e) {
                System.err.println("Caught IOException trying to create the FileWriter:\n" + e + "\n");
                e.printStackTrace();
                return;
            }
            PrintWriter pw = new PrintWriter(fw);
            pw.format("1\n");
            pw.close();
        }
        if (mode == FilePumpSettings.FileMode.FTP) {
            logout();
        } else if (mode == FilePumpSettings.FileMode.SFTP) {
            manager.close();
        }
        System.err.println("Wrote out \"end.txt\"");
        return;
    }

    //
    // Setup a periodic timer to update the file count on the GUI
    //
    TimerTask timerTask = new FileCountTimerTask(pumpGUI, this);
    // run timer task as daemon thread
    Timer timer = new Timer(true);
    timer.scheduleAtFixedRate(timerTask, 0, 5 * 1000);

    while (pumpGUI.bPumpRunning) {

        long start_time = System.currentTimeMillis();

        // Create the next file
        // Always have time move forward
        // NOTE: The computer's clock being adjusted backward could activate this code
        if (start_time <= time_used_in_last_filename) {
            while (true) {
                try {
                    Thread.sleep(1);
                } catch (InterruptedException ie) {
                    // nothing to do
                }
                start_time = System.currentTimeMillis();
                if (start_time > time_used_in_last_filename) {
                    break;
                }
            }
        }
        ++file_index;
        String filename = Long.toString(start_time) + "_" + Integer.toString(file_index) + ".txt";
        int random_num = (int) ((double) random_range * random_generator.nextDouble());
        if (mode == FilePumpSettings.FileMode.FTP) {
            writeToFTP(output_dir_name, filename, random_num);
        } else if (mode == FilePumpSettings.FileMode.SFTP) {
            writeToSFTP(filename, random_num);
        } else {
            File full_filename = new File(output_dir_name, filename);
            FileWriter fw;
            try {
                fw = new FileWriter(full_filename, false);
            } catch (IOException e) {
                System.err.println("Caught IOException trying to create the FileWriter:\n" + e + "\n");
                e.printStackTrace();
                break;
            }
            PrintWriter pw = new PrintWriter(fw);
            // Write out a random number to the file
            pw.format("%06d\n", random_num);
            pw.close();
        }

        if ((!pumpGUI.bPumpRunning) || (file_index == total_num_files)) {
            break;
        }

        // Sleep
        try {
            long actual_sleep_amount = (long) Math.round(sleep_time_millis);
            if (actual_sleep_amount > 0) {
                Thread.sleep(actual_sleep_amount);
            }
        } catch (InterruptedException ie) {
            // nothing to do
        }

        // Check how we are doing on timing and adjust the sleep time if needed
        long stop_time = System.currentTimeMillis();
        double time_err_secs = desired_period - (double) (stop_time - start_time) / 1000.0;
        // Adjust sleep_time_millis based on this timing error
        sleep_time_millis = sleep_time_millis + 0.25 * time_err_secs * 1000.0;
        // Smallest sleep time is 0
        if (sleep_time_millis < 0) {
            sleep_time_millis = 0.0;
        }

        time_used_in_last_filename = start_time;

    }

    if (mode == FilePumpSettings.FileMode.FTP) {
        logout();
    } else if (mode == FilePumpSettings.FileMode.SFTP) {
        manager.close();
    }

    timer.cancel();

    // Make sure the final file count is displayed in the GUI
    pumpGUI.updateNumFiles_nonEDT(file_index);

    // If we are exiting because the requested number of files have been
    // reached (ie, exiting of our own volition as opposed to someone else
    // canceling the run), then reset the user interface
    if (file_index == total_num_files) {
        pumpGUI.resetGUI_nonEDT();
    }

    if (!pumpGUI.bShowGUI) {
        System.err.print("\n");
    }
    System.err.println("Exiting FilePumpWorker; wrote out " + file_index + " files.");

}

From source file:com.seer.datacruncher.services.ServiceScheduledJob.java

@Override
protected synchronized void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
    long jobId = arg0.getJobDetail().getJobDataMap().getLong("jobId");
    JobsEntity jobEntity = jobsDao.find(jobId);
    if (!jobEntity.isWorking()) {

        if (jobsDao.setWorkStatus(jobId, true)) {
            try {
                long eventTriggerId = arg0.getJobDetail().getJobDataMap().getString("eventTriggerId") == null
                        ? -1l/*from   w  ww. j  a  v  a  2 s  .c om*/
                        : Long.parseLong(arg0.getJobDetail().getJobDataMap().getString("eventTriggerId"));
                if (eventTriggerId > 0) {
                    EventTriggerEntity entity = eventTriggerDao.findEventTriggerById(eventTriggerId);
                    String className = entity.getName();
                    try {
                        String sourceCode = entity.getCode();
                        EventTrigger eventTrigger;
                        String response;
                        eventTrigger = (EventTrigger) CommonUtils.getClassInstance(className,
                                "com.seer.datacruncher.eventtrigger.EventTrigger", EventTrigger.class,
                                sourceCode);
                        assert eventTrigger != null;
                        response = eventTrigger.trigger();
                        log.info("Response From EventTrigger(" + className + ") :" + response);
                    } catch (Exception e) {
                        e.printStackTrace();
                        log.error("EventTrigger(" + className + ") :" + e.getMessage(), e);
                        logDao.setErrorLogMessage("EventTrigger(" + className + ") :" + e.getMessage());
                    } catch (NoClassDefFoundError err) {
                        log.error("EventTrigger(" + className + ") :" + err.getMessage(), err);
                        logDao.setErrorLogMessage("EventTrigger(" + className + ") :" + err.getMessage());
                    }
                    return;
                }

                int day = arg0.getJobDetail().getJobDataMap().getString("day") == null ? -1
                        : Integer.parseInt(arg0.getJobDetail().getJobDataMap().getString("day"));
                int month = arg0.getJobDetail().getJobDataMap().getString("month") == null ? -1
                        : Integer.parseInt(arg0.getJobDetail().getJobDataMap().getString("month"));
                if ((day > 0 && day != Calendar.getInstance().get(Calendar.DAY_OF_MONTH))
                        || (month > 0 && month != (Calendar.getInstance().get(Calendar.MONTH) + 1))) {
                    return;
                }
                StandardFileSystemManager fsManager = new StandardFileSystemManager();
                boolean isDataStream = true;
                try {
                    fsManager.init();
                    long schemaId = arg0.getJobDetail().getJobDataMap().getLong("schemaId");
                    long schedulerId = arg0.getJobDetail().getJobDataMap().getLong("schedulerId");
                    //long jobId = arg0.getJobDetail().getJobDataMap().getLong("jobId");
                    long connectionId = arg0.getJobDetail().getJobDataMap().getLong("connectionId");

                    String datastream = "";
                    int idSchemaType = schemasDao.find(schemaId).getIdSchemaType();

                    TasksEntity taskEntity = tasksDao.find(schedulerId);
                    //JobsEntity jobEntity = jobsDao.find(jobId);
                    if (taskEntity.getIsOneShoot()) {
                        jobEntity.setIsActive(0);
                        jobsDao.update(jobEntity);
                    }
                    if (idSchemaType == SchemaType.GENERATION) {
                        StreamGenerationUtils sgu = new StreamGenerationUtils();
                        datastream = sgu.getStream(schemaId);

                        log.debug("Content stream: " + schemaId);

                        if (datastream.trim().length() > 0) {
                            log.debug("Datastream to validate: " + datastream);
                            DatastreamsInput datastreamsInput = new DatastreamsInput();
                            String result = datastreamsInput.datastreamsInput(datastream, schemaId, null);
                            log.debug("Validation result: " + result);
                        } else {
                            isDataStream = false;
                            log.debug("No datastream create");
                        }
                    }
                    if (connectionId != 0) {
                        int serviceId = Integer
                                .parseInt(arg0.getJobDetail().getJobDataMap().getString("serviceId"));

                        String hostName = arg0.getJobDetail().getJobDataMap().getString("ftpServerIp");
                        String port = arg0.getJobDetail().getJobDataMap().getString("port");
                        String userName = arg0.getJobDetail().getJobDataMap().getString("userName");
                        String password = arg0.getJobDetail().getJobDataMap().getString("password");
                        String inputDirectory = arg0.getJobDetail().getJobDataMap().getString("inputDirectory");
                        String fileName = arg0.getJobDetail().getJobDataMap().getString("fileName");

                        ConnectionsEntity conn;

                        conn = connectionsDao.find(connectionId);

                        if (inputDirectory == null || inputDirectory.trim().length() == 0) {
                            inputDirectory = fileName;
                        } else if (!(conn.getIdConnType() == GenericType.uploadTypeConn
                                && serviceId == Servers.HTTP.getDbCode())) {
                            inputDirectory = inputDirectory + "/" + fileName;
                        }

                        log.info("(jobId:" + jobEntity.getName() + ") - Trying to Server polling at server ["
                                + hostName + ":" + port + "] with user[" + userName + "].");
                        String url = "";
                        if (serviceId == Servers.SAMBA.getDbCode()) {
                            if (!fsManager.hasProvider("smb")) {
                                fsManager.addProvider("smb", new SmbFileProvider());
                            }
                            url = "smb://" + userName + ":" + password + "@" + hostName + ":" + port + "/"
                                    + inputDirectory;
                        } else if (serviceId == Servers.HTTP.getDbCode()) {
                            if (!fsManager.hasProvider("http")) {
                                fsManager.addProvider("http", new HttpFileProvider());
                            }
                            url = "http://" + hostName + ":" + port + "/" + inputDirectory;
                        } else if (serviceId == Servers.FTP.getDbCode()) {
                            if (!fsManager.hasProvider("ftp")) {
                                fsManager.addProvider("ftp", new FtpFileProvider());
                            }
                            url = "ftp://" + userName + ":" + password + "@" + hostName + ":" + port + "/"
                                    + inputDirectory;
                        }
                        log.info("url:" + url);
                        final FileObject fileObject = fsManager.resolveFile(url);

                        if (conn.getIdConnType() == GenericType.DownloadTypeConn) {

                            if (conn.getFileDateTime() != null && conn.getFileDateTime().getTime() == fileObject
                                    .getContent().getLastModifiedTime()) {
                                log.info("There is no New or Updated '" + fileName
                                        + "' file on server to validate. Returning ...");
                                return;
                            } else {
                                log.info("There is New or Updated '" + fileName
                                        + "' file on server to validate. Validating ...");
                                ConnectionsEntity connection = connectionsDao.find(connectionId);
                                connection.setFileDateTime(
                                        new Date(fileObject.getContent().getLastModifiedTime()));
                                ApplicationContext ctx = AppContext.getApplicationContext();
                                ConnectionsDao connDao = (ctx.getBean(ConnectionsDao.class));

                                if (connDao != null) {
                                    connDao.update(connection);
                                }

                                Map<String, byte[]> resultMap = new HashMap<String, byte[]>();
                                byte data[] = new byte[(int) fileObject.getContent().getSize()];
                                fileObject.getContent().getInputStream().read(data);
                                resultMap.put(fileObject.getName().getBaseName(), data);

                                Set<String> keySet = resultMap.keySet();
                                Iterator<String> itr = keySet.iterator();
                                while (itr.hasNext()) {

                                    String strFileName = itr.next();
                                    String result = "";
                                    try {

                                        Long longSchemaId = schemaId;
                                        SchemaEntity schemaEntity = schemasDao.find(longSchemaId);
                                        if (schemaEntity == null) {
                                            result = "No schema found in database with Id [" + longSchemaId
                                                    + "]";
                                            log.error(result);
                                            logDao.setErrorLogMessage(result);
                                        } else {
                                            if (strFileName.endsWith(FileExtensionType.ZIP.getAbbreviation())) {
                                                // Case 1: When user upload a Zip file - All ZIP entries should be validate one by one
                                                ZipInputStream inStream = null;
                                                try {
                                                    inStream = new ZipInputStream(
                                                            new ByteArrayInputStream(resultMap.get(fileName)));
                                                    ZipEntry entry;
                                                    while (!(isStreamClose(inStream))
                                                            && (entry = inStream.getNextEntry()) != null) {
                                                        if (!entry.isDirectory()) {
                                                            DatastreamsInput datastreamsInput = new DatastreamsInput();
                                                            datastreamsInput
                                                                    .setUploadedFileName(entry.getName());
                                                            byte[] byteInput = IOUtils.toByteArray(inStream);
                                                            result += datastreamsInput.datastreamsInput(
                                                                    new String(byteInput), longSchemaId,
                                                                    byteInput);
                                                        }
                                                        inStream.closeEntry();
                                                    }
                                                    log.debug(result);
                                                } catch (IOException ex) {
                                                    result = "Error occured during fetch records from ZIP file.";
                                                    log.error(result);
                                                    logDao.setErrorLogMessage(result);
                                                } finally {
                                                    if (inStream != null)
                                                        inStream.close();
                                                }
                                            } else {
                                                DatastreamsInput datastreamsInput = new DatastreamsInput();
                                                datastreamsInput.setUploadedFileName(strFileName);
                                                result = datastreamsInput.datastreamsInput(
                                                        new String(resultMap.get(strFileName)), longSchemaId,
                                                        resultMap.get(strFileName));
                                                log.debug(result);
                                            }
                                        }
                                    } catch (Exception ex) {
                                        ex.printStackTrace();
                                        result = "Exception occured during process the message for xml file "
                                                + strFileName + " Error - " + ex.getMessage();
                                        log.error(result);
                                        logDao.setErrorLogMessage(result);
                                    }
                                }
                            }
                        } else if (isDataStream && (conn.getIdConnType() == GenericType.uploadTypeConn)) {

                            File uploadFile = File.createTempFile(fileName, ".tmp");

                            try {
                                BufferedWriter bw = new BufferedWriter(new FileWriter(uploadFile));
                                bw.write(datastream);
                                bw.flush();
                                bw.close();
                            } catch (IOException ioex) {
                                log.error("Datastream file can't be created");
                                logDao.setErrorLogMessage("Datastream file can't be created");
                                return;
                            }

                            if (serviceId == Servers.HTTP.getDbCode()) {
                                try {
                                    HttpClient httpclient = new HttpClient();
                                    PostMethod method = new PostMethod(url);

                                    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
                                            new DefaultHttpMethodRetryHandler(3, false));

                                    Part[] parts = new Part[] {
                                            new FilePart("file", uploadFile.getName(), uploadFile) };
                                    method.setRequestEntity(
                                            new MultipartRequestEntity(parts, method.getParams()));
                                    method.setDoAuthentication(true);

                                    int statusCode = httpclient.executeMethod(method);

                                    String responseBody = new String(method.getResponseBody());

                                    if (statusCode != HttpStatus.SC_OK) {
                                        throw new HttpException(method.getStatusLine().toString());
                                    } else {
                                        System.out.println(responseBody);
                                    }

                                    method.releaseConnection();

                                } catch (Exception ex) {
                                    log.error("Exception occurred during uploading of file at HTTP Server: "
                                            + ex.getMessage());
                                    logDao.setErrorLogMessage(
                                            "Exception occurred during uploading of file at HTTP Server: "
                                                    + ex.getMessage());
                                }
                            } else {
                                try {
                                    FileObject localFileObject = fsManager
                                            .resolveFile(uploadFile.getAbsolutePath());
                                    fileObject.copyFrom(localFileObject, Selectors.SELECT_SELF);
                                    System.out.println("File uploaded at : " + new Date());
                                    if (uploadFile.exists()) {
                                        uploadFile.delete();
                                    }
                                } catch (Exception ex) {
                                    log.error(
                                            "Exception occurred during uploading of file: " + ex.getMessage());
                                    logDao.setErrorLogMessage(
                                            "Exception occurred during uploading of file: " + ex.getMessage());
                                }
                            }
                        }
                    }
                } catch (Exception ex) {
                    log.error("Error " + ": " + ex.getMessage());
                } finally {
                    fsManager.close();
                }
            } finally {
                jobsDao.setWorkStatus(jobId, false);
            }
        } else {
            log.error("Can not set " + jobEntity.getName() + "working.");
        }
    } else {
        log.debug("Job " + jobEntity.getName() + " is working.");
    }

}

From source file:fr.cls.atoll.motu.library.misc.vfs.VFSManager.java

/**
 * Open.// w w w  .j a va  2 s. com
 * 
 * @param user the user
 * @param pwd the pwd
 * @param scheme the scheme
 * 
 * @throws MotuException the motu exception
 */
public void open(String user, String pwd, String scheme, String host) throws MotuException {
    if (LOG.isDebugEnabled()) {
        LOG.debug("open(String, String, String) - entering");
    }

    if (isOpened()) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("open(String, String, String) - exiting");
        }
        return;
    }

    standardFileSystemManager = new StandardFileSystemManager();
    standardFileSystemManager.setLogger(LogFactory.getLog(VFS.class));
    standardFileSystemManager.setClassLoader(this.getClass().getClassLoader());
    try {
        standardFileSystemManager
                .setConfiguration(ConfigLoader.getInstance().get(Organizer.getVFSProviderConfig()));
        //standardFileSystemManager.setCacheStrategy(CacheStrategy.ON_CALL);
        standardFileSystemManager.setCacheStrategy(CacheStrategy.ON_RESOLVE);
        // standardFileSystemManager.setFilesCache(new SoftRefFilesCache());
        // standardFileSystemManager.addProvider("jar", new JarFileProvider());
        standardFileSystemManager.init();
        open = true;
    } catch (FileSystemException e) {
        LOG.fatal("Error in VFS initialisation - Unable to intiialize VFS", e);
        throw new MotuException("Error in VFS initialisation - Unable to intiialize VFS", e);
    } catch (IOException e) {
        LOG.fatal("Error in VFS initialisation - Unable to intiialize VFS", e);
        throw new MotuException("Error in VFS initialisation - Unable to intiialize VFS", e);
    }

    opts = new FileSystemOptions();

    setUserInfo(user, pwd);
    setSchemeOpts(scheme, host);

    if (LOG.isDebugEnabled()) {
        LOG.debug("open(String, String, String) - exiting");
    }
}

From source file:it.openprj.jValidator.services.ServiceScheduledJob.java

@Override
protected synchronized void executeInternal(JobExecutionContext arg0) throws JobExecutionException {
    long jobId = arg0.getJobDetail().getJobDataMap().getLong("jobId");
    JobsEntity jobEntity = jobsDao.find(jobId);
    if (!jobEntity.isWorking()) {

        if (jobsDao.setWorkStatus(jobId, true)) {
            try {
                long eventTriggerId = arg0.getJobDetail().getJobDataMap().getString("eventTriggerId") == null
                        ? -1l/*from  w  ww .j  a v a  2s .c om*/
                        : Long.parseLong(arg0.getJobDetail().getJobDataMap().getString("eventTriggerId"));
                if (eventTriggerId > 0) {
                    EventTriggerEntity entity = eventTriggerDao.findEventTriggerById(eventTriggerId);
                    String className = entity.getName();
                    try {
                        String sourceCode = entity.getCode();
                        EventTrigger eventTrigger;
                        String response;
                        eventTrigger = (EventTrigger) CommonUtils.getClassInstance(className,
                                "it.openprj.jValidator.eventtrigger.EventTrigger", EventTrigger.class,
                                sourceCode);
                        assert eventTrigger != null;
                        response = eventTrigger.trigger();
                        log.info("Response From EventTrigger(" + className + ") :" + response);
                    } catch (Exception e) {
                        e.printStackTrace();
                        log.error("EventTrigger(" + className + ") :" + e.getMessage(), e);
                        logDao.setErrorLogMessage("EventTrigger(" + className + ") :" + e.getMessage());
                    } catch (NoClassDefFoundError err) {
                        log.error("EventTrigger(" + className + ") :" + err.getMessage(), err);
                        logDao.setErrorLogMessage("EventTrigger(" + className + ") :" + err.getMessage());
                    }
                    return;
                }

                int day = arg0.getJobDetail().getJobDataMap().getString("day") == null ? -1
                        : Integer.parseInt(arg0.getJobDetail().getJobDataMap().getString("day"));
                int month = arg0.getJobDetail().getJobDataMap().getString("month") == null ? -1
                        : Integer.parseInt(arg0.getJobDetail().getJobDataMap().getString("month"));
                if ((day > 0 && day != Calendar.getInstance().get(Calendar.DAY_OF_MONTH))
                        || (month > 0 && month != (Calendar.getInstance().get(Calendar.MONTH) + 1))) {
                    return;
                }
                StandardFileSystemManager fsManager = new StandardFileSystemManager();
                boolean isDataStream = true;
                try {
                    fsManager.init();
                    long schemaId = arg0.getJobDetail().getJobDataMap().getLong("schemaId");
                    long schedulerId = arg0.getJobDetail().getJobDataMap().getLong("schedulerId");
                    //long jobId = arg0.getJobDetail().getJobDataMap().getLong("jobId");
                    long connectionId = arg0.getJobDetail().getJobDataMap().getLong("connectionId");

                    String datastream = "";
                    int idSchemaType = schemasDao.find(schemaId).getIdSchemaType();

                    TasksEntity taskEntity = tasksDao.find(schedulerId);
                    //JobsEntity jobEntity = jobsDao.find(jobId);
                    if (taskEntity.getIsOneShoot()) {
                        jobEntity.setIsActive(0);
                        jobsDao.update(jobEntity);
                    }
                    if (idSchemaType == SchemaType.GENERATION) {
                        StreamGenerationUtils sgu = new StreamGenerationUtils();
                        datastream = sgu.getStream(schemaId);

                        log.debug("Content stream: " + schemaId);

                        if (datastream.trim().length() > 0) {
                            log.debug("Datastream to validate: " + datastream);
                            DatastreamsInput datastreamsInput = new DatastreamsInput();
                            String result = datastreamsInput.datastreamsInput(datastream, schemaId, null);
                            log.debug("Validation result: " + result);
                        } else {
                            isDataStream = false;
                            log.debug("No datastream create");
                        }
                    }
                    if (connectionId != 0) {
                        int serviceId = Integer
                                .parseInt(arg0.getJobDetail().getJobDataMap().getString("serviceId"));

                        String hostName = arg0.getJobDetail().getJobDataMap().getString("ftpServerIp");
                        String port = arg0.getJobDetail().getJobDataMap().getString("port");
                        String userName = arg0.getJobDetail().getJobDataMap().getString("userName");
                        String password = arg0.getJobDetail().getJobDataMap().getString("password");
                        String inputDirectory = arg0.getJobDetail().getJobDataMap().getString("inputDirectory");
                        String fileName = arg0.getJobDetail().getJobDataMap().getString("fileName");

                        ConnectionsEntity conn;

                        conn = connectionsDao.find(connectionId);

                        if (inputDirectory == null || inputDirectory.trim().length() == 0) {
                            inputDirectory = fileName;
                        } else if (!(conn.getIdConnType() == GenericType.uploadTypeConn
                                && serviceId == Servers.HTTP.getDbCode())) {
                            inputDirectory = inputDirectory + "/" + fileName;
                        }

                        log.info("(jobId:" + jobEntity.getName() + ") - Trying to Server polling at server ["
                                + hostName + ":" + port + "] with user[" + userName + "].");
                        String url = "";
                        if (serviceId == Servers.SAMBA.getDbCode()) {
                            if (!fsManager.hasProvider("smb")) {
                                fsManager.addProvider("smb", new SmbFileProvider());
                            }
                            url = "smb://" + userName + ":" + password + "@" + hostName + ":" + port + "/"
                                    + inputDirectory;
                        } else if (serviceId == Servers.HTTP.getDbCode()) {
                            if (!fsManager.hasProvider("http")) {
                                fsManager.addProvider("http", new HttpFileProvider());
                            }
                            url = "http://" + hostName + ":" + port + "/" + inputDirectory;
                        } else if (serviceId == Servers.FTP.getDbCode()) {
                            if (!fsManager.hasProvider("ftp")) {
                                fsManager.addProvider("ftp", new FtpFileProvider());
                            }
                            url = "ftp://" + userName + ":" + password + "@" + hostName + ":" + port + "/"
                                    + inputDirectory;
                        }
                        log.info("url:" + url);
                        final FileObject fileObject = fsManager.resolveFile(url);

                        if (conn.getIdConnType() == GenericType.DownloadTypeConn) {

                            if (conn.getFileDateTime() != null && conn.getFileDateTime().getTime() == fileObject
                                    .getContent().getLastModifiedTime()) {
                                log.info("There is no New or Updated '" + fileName
                                        + "' file on server to validate. Returning ...");
                                return;
                            } else {
                                log.info("There is New or Updated '" + fileName
                                        + "' file on server to validate. Validating ...");
                                ConnectionsEntity connection = connectionsDao.find(connectionId);
                                connection.setFileDateTime(
                                        new Date(fileObject.getContent().getLastModifiedTime()));
                                ApplicationContext ctx = AppContext.getApplicationContext();
                                ConnectionsDao connDao = (ctx.getBean(ConnectionsDao.class));

                                if (connDao != null) {
                                    connDao.update(connection);
                                }

                                Map<String, byte[]> resultMap = new HashMap<String, byte[]>();
                                byte data[] = new byte[(int) fileObject.getContent().getSize()];
                                fileObject.getContent().getInputStream().read(data);
                                resultMap.put(fileObject.getName().getBaseName(), data);

                                Set<String> keySet = resultMap.keySet();
                                Iterator<String> itr = keySet.iterator();
                                while (itr.hasNext()) {

                                    String strFileName = itr.next();
                                    String result = "";
                                    try {

                                        Long longSchemaId = schemaId;
                                        SchemaEntity schemaEntity = schemasDao.find(longSchemaId);
                                        if (schemaEntity == null) {
                                            result = "No schema found in database with Id [" + longSchemaId
                                                    + "]";
                                            log.error(result);
                                            logDao.setErrorLogMessage(result);
                                        } else {
                                            if (strFileName.endsWith(FileExtensionType.ZIP.getAbbreviation())) {
                                                // Case 1: When user upload a Zip file - All ZIP entries should be validate one by one
                                                ZipInputStream inStream = null;
                                                try {
                                                    inStream = new ZipInputStream(
                                                            new ByteArrayInputStream(resultMap.get(fileName)));
                                                    ZipEntry entry;
                                                    while (!(isStreamClose(inStream))
                                                            && (entry = inStream.getNextEntry()) != null) {
                                                        if (!entry.isDirectory()) {
                                                            DatastreamsInput datastreamsInput = new DatastreamsInput();
                                                            datastreamsInput
                                                                    .setUploadedFileName(entry.getName());
                                                            byte[] byteInput = IOUtils.toByteArray(inStream);
                                                            result += datastreamsInput.datastreamsInput(
                                                                    new String(byteInput), longSchemaId,
                                                                    byteInput);
                                                        }
                                                        inStream.closeEntry();
                                                    }
                                                    log.debug(result);
                                                } catch (IOException ex) {
                                                    result = "Error occured during fetch records from ZIP file.";
                                                    log.error(result);
                                                    logDao.setErrorLogMessage(result);
                                                } finally {
                                                    if (inStream != null)
                                                        inStream.close();
                                                }
                                            } else {
                                                DatastreamsInput datastreamsInput = new DatastreamsInput();
                                                datastreamsInput.setUploadedFileName(strFileName);
                                                result = datastreamsInput.datastreamsInput(
                                                        new String(resultMap.get(strFileName)), longSchemaId,
                                                        resultMap.get(strFileName));
                                                log.debug(result);
                                            }
                                        }
                                    } catch (Exception ex) {
                                        ex.printStackTrace();
                                        result = "Exception occured during process the message for xml file "
                                                + strFileName + " Error - " + ex.getMessage();
                                        log.error(result);
                                        logDao.setErrorLogMessage(result);
                                    }
                                }
                            }
                        } else if (isDataStream && (conn.getIdConnType() == GenericType.uploadTypeConn)) {

                            File uploadFile = File.createTempFile(fileName, ".tmp");

                            try {
                                BufferedWriter bw = new BufferedWriter(new FileWriter(uploadFile));
                                bw.write(datastream);
                                bw.flush();
                                bw.close();
                            } catch (IOException ioex) {
                                log.error("Datastream file can't be created");
                                logDao.setErrorLogMessage("Datastream file can't be created");
                                return;
                            }

                            if (serviceId == Servers.HTTP.getDbCode()) {
                                try {
                                    HttpClient httpclient = new HttpClient();
                                    PostMethod method = new PostMethod(url);

                                    method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
                                            new DefaultHttpMethodRetryHandler(3, false));

                                    Part[] parts = new Part[] {
                                            new FilePart("file", uploadFile.getName(), uploadFile) };
                                    method.setRequestEntity(
                                            new MultipartRequestEntity(parts, method.getParams()));
                                    method.setDoAuthentication(true);

                                    int statusCode = httpclient.executeMethod(method);

                                    String responseBody = new String(method.getResponseBody());

                                    if (statusCode != HttpStatus.SC_OK) {
                                        throw new HttpException(method.getStatusLine().toString());
                                    } else {
                                        System.out.println(responseBody);
                                    }

                                    method.releaseConnection();

                                } catch (Exception ex) {
                                    log.error("Exception occurred during uploading of file at HTTP Server: "
                                            + ex.getMessage());
                                    logDao.setErrorLogMessage(
                                            "Exception occurred during uploading of file at HTTP Server: "
                                                    + ex.getMessage());
                                }
                            } else {
                                try {
                                    FileObject localFileObject = fsManager
                                            .resolveFile(uploadFile.getAbsolutePath());
                                    fileObject.copyFrom(localFileObject, Selectors.SELECT_SELF);
                                    System.out.println("File uploaded at : " + new Date());
                                    if (uploadFile.exists()) {
                                        uploadFile.delete();
                                    }
                                } catch (Exception ex) {
                                    log.error(
                                            "Exception occurred during uploading of file: " + ex.getMessage());
                                    logDao.setErrorLogMessage(
                                            "Exception occurred during uploading of file: " + ex.getMessage());
                                }
                            }
                        }
                    }
                } catch (Exception ex) {
                    log.error("Error " + ": " + ex.getMessage());
                } finally {
                    fsManager.close();
                }
            } finally {
                jobsDao.setWorkStatus(jobId, false);
            }
        } else {
            log.error("Can not set " + jobEntity.getName() + "working.");
        }
    } else {
        log.debug("Job " + jobEntity.getName() + " is working.");
    }

}

From source file:de.innovationgate.wgpublisher.design.fs.FileSystemDesignManager.java

public FileSystemDesignManager(WGACore core, WGDatabase db, String path, Map<String, String> options)
        throws WGDesignSyncException, IOException, WGAPIException, InstantiationException,
        IllegalAccessException, InvalidCSConfigVersionException {
    _core = core;/*from   w ww . j a v  a2s  .  c  o  m*/

    // Init logger
    if (db.getDbReference().startsWith(PluginConfig.PLUGIN_DBKEY_PREFIX)) {
        _log = Logger.getLogger(LOGGER_DESIGNSYNC_QUIET);
    } else {
        _log = Logger.getLogger(LOGGER_DESIGNSYNC);
    }

    _fsManager = new StandardFileSystemManager();
    _fsManager.setCacheStrategy(CacheStrategy.MANUAL);
    _fsManager.setLogger(new Log4JLogger(Logger.getLogger(LOGGER_DESIGNSYNC_QUIET)));
    _fsManager.setClassLoader(WGACore.getLibraryLoader());
    _fsManager.setCacheStrategy(getVFSCacheStrategy());
    _fsManager.init();

    _designPath = path;
    _designOptions = options;
    _designKey = options.get(OPTION_DESIGNKEY);

    _db = db;

    _directAccessDefault = db.getBooleanAttribute(WGACore.DBATTRIB_DIRECTACCESSDEFAULT, false);

    // Determine provided types
    String optionProviderTypes = (String) db.getCreationOptions().get(WGDatabase.COPTION_DESIGNPROVIDERTYPES);
    if (optionProviderTypes != null) {
        Iterator<String> providerTypes = WGUtils.deserializeCollection(optionProviderTypes, ",", true)
                .iterator();
        while (providerTypes.hasNext()) {
            String providerTypeName = providerTypes.next();
            int providerType = WGDocument.doctypeNameToNumber(providerTypeName);
            if (providerType != 0) {
                _syncedDoctypes.add(new Integer(providerType));
            }
        }
    } else {
        _syncedDoctypes.add(new Integer(WGDocument.TYPE_FILECONTAINER));
        _syncedDoctypes.add(new Integer(WGDocument.TYPE_TML));
        _syncedDoctypes.add(new Integer(WGDocument.TYPE_CSSJS));
    }

    fetchFileSystem(core);
    if (_db.isConnected()) {
        init();
    } else {
        _db.addDatabaseConnectListener(this);
    }

}