com.axelor.apps.tool.net.URLService.java Source code

Java tutorial

Introduction

Here is the source code for com.axelor.apps.tool.net.URLService.java

Source

/**
 * Axelor Business Solutions
 *
 * Copyright (C) 2016 Axelor (<http://axelor.com>).
 *
 * This program is free software: you can redistribute it and/or  modify
 * it under the terms of the GNU Affero General Public License, version 3,
 * as published by the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.axelor.apps.tool.net;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.axelor.apps.tool.exception.IExceptionMessage;
import com.axelor.apps.tool.file.FileTool;
import com.axelor.i18n.I18n;
import com.google.common.base.Strings;

public final class URLService {

    final static int size = 1024;

    private static final Logger LOG = LoggerFactory.getLogger(URLService.class);

    /**
     * Test la validit d'une url.
     *
     * @param url
     *       L'URL  tester.
     *
     * @return
     */
    public static String notExist(String url) {

        if (Strings.isNullOrEmpty(url)) {
            return I18n.get(IExceptionMessage.URL_SERVICE_1);
        }

        try {
            URL fileURL = new URL(url);
            fileURL.openConnection().connect();
            return null;
        } catch (java.net.MalformedURLException ex) {
            ex.printStackTrace();
            return String.format(I18n.get(IExceptionMessage.URL_SERVICE_2), url);
        } catch (java.io.IOException ex) {
            ex.printStackTrace();
            return String.format(I18n.get(IExceptionMessage.URL_SERVICE_3), url);
        }

    }

    public static void fileUrl(File file, String fAddress, String localFileName, String destinationDir)
            throws IOException {
        int ByteRead, ByteWritten = 0;
        byte[] buf = new byte[size];

        URL Url = new URL(fAddress);
        OutputStream outputStream = new BufferedOutputStream(new FileOutputStream(file));
        URLConnection urlConnection = Url.openConnection();
        InputStream inputStream = urlConnection.getInputStream();

        while ((ByteRead = inputStream.read(buf)) != -1) {
            outputStream.write(buf, 0, ByteRead);
            ByteWritten += ByteRead;
        }

        LOG.info("Downloaded Successfully.");
        LOG.debug("No of bytes :" + ByteWritten);

        if (inputStream != null) {
            inputStream.close();
        }
        if (outputStream != null) {
            outputStream.close();
        }

    }

    public static File fileDownload(String fAddress, String destinationDir, String fileName) throws IOException {

        int slashIndex = fAddress.lastIndexOf('/');
        int periodIndex = fAddress.lastIndexOf('.');

        if (periodIndex >= 1 && slashIndex >= 0 && slashIndex < fAddress.length() - 1) {
            LOG.debug("Downloading file {} from {} to {}", fileName, fAddress, destinationDir);

            File file = FileTool.create(destinationDir, fileName);

            fileUrl(file, fAddress, fileName, destinationDir);

            return file;

        } else {
            LOG.error("Destination path or filename is not well formatted.");
            return null;
        }
    }

    public static void fileDownload(File file, String fAddress, String destinationDir, String fileName)
            throws IOException {

        int slashIndex = fAddress.lastIndexOf('/');
        int periodIndex = fAddress.lastIndexOf('.');

        if (periodIndex >= 1 && slashIndex >= 0 && slashIndex < fAddress.length() - 1) {
            LOG.debug("Downloading file {} from {} to {}", fileName, fAddress, destinationDir);
            fileUrl(file, fAddress, fileName, destinationDir);
        } else {
            LOG.error("Destination path or filename is not well formatted.");
        }
    }

}