Android Open Source - dissertation-project Server Download Connectable






From Project

Back to project page dissertation-project.

License

The source code is released under:

MIT License

If you think the Android project dissertation-project listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.fyp.resilience.connection;
//from  w  ww  .jav a2  s  .  c  om
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import android.content.Context;
import android.net.Uri;

import com.fyp.resilience.Constants;
import com.fyp.resilience.ResilienceController;
import com.fyp.resilience.database.model.DataWhole;
import com.fyp.resilience.util.Utils;

public class ServerDownloadConnectable extends Connectable {

    public ServerDownloadConnectable(final Context context, final DataWhole dataWhole) {
        super(context, dataWhole);
        mConnectionType = Connectable.CONNECTION_TYPE_SERVER_DOWNLOAD;
    }

    @Override
    public void run() {
        super.run();

        mDataWhole.setState(DataWhole.STATE_DOWNLOADING);

        mConnectionStatus = runTask();

        runPostTask();
    }

    @Override
    protected int runTask() {
        InputStream urlStream = null;
        OutputStream fileStream = null;

        try {
            final URL url = new URL(Constants.WIDERST_DOWNLOAD_URL + mDataWhole.getKey());
            final HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setReadTimeout(30000);
            conn.setConnectTimeout(15000);
            conn.setRequestMethod("GET");
            conn.setDoInput(true);
            conn.connect();

            final int response = conn.getResponseCode();
            if (response == HttpURLConnection.HTTP_OK) {

                Context context = mContext.get();

                if (null == context) {
                    return Connectable.STATUS_CONNECTION_ERROR;
                }

                /* Retrieve the length of the file */
                final int fileLength = conn.getContentLength();

                final byte[] buffer = new byte[4096];
                urlStream = conn.getInputStream();
                fileStream = Utils.createFile(context, mDataWhole.getFileName(),
                        Context.MODE_WORLD_READABLE);

                int length;
                long downloaded = 0;
                while ((length = urlStream.read(buffer)) != -1) {
                    fileStream.write(buffer, 0, length);

                    if (fileLength > 0) {
                        downloaded += length;
                        mProgress = (int) (((float) downloaded / fileLength) * 100);
                        notifyOfProgressChange();
                    }
                }

                mDataWhole.setUriString(Uri.fromFile(
                        Utils.getFileFromStream(context, mDataWhole.getFileName())).toString());
                return Connectable.STATUS_SUCCESS;
            }

            return Connectable.STATUS_CONNECTION_ERROR;

        } catch (IOException io) {
            io.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (null != urlStream) {
                    urlStream.close();
                }
                if (null != fileStream) {
                    fileStream.flush();
                    fileStream.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return Connectable.STATUS_CONNECTION_ERROR;
    }

    @Override
    protected void runPostTask() {
        final Context context = mContext.get();
        if (null != context) {

            final ResilienceController controller = ResilienceController.getInstance(context);
            if (mConnectionStatus == Connectable.STATUS_SUCCESS) {

                controller.removeDataPieces(mDataWhole);
                mDataWhole.setAvailability(true);
                mDataWhole.setState(DataWhole.STATE_COMPLETED);
                controller.addDataWhole(mDataWhole);

            } else {
                mDataWhole.setState(DataWhole.STATE_COMPLETED);
            }

            controller.removeConnection(this);
        }
    }
}




Java Source Code List

com.fyp.resilience.Constants.java
com.fyp.resilience.Flags.java
com.fyp.resilience.GCMIntentService.java
com.fyp.resilience.PreferenceConstants.java
com.fyp.resilience.ResilienceApplication.java
com.fyp.resilience.ResilienceController.java
com.fyp.resilience.activity.LicenceActivity.java
com.fyp.resilience.activity.ResilienceActivity.java
com.fyp.resilience.activity.SettingsActivity.java
com.fyp.resilience.adapter.ClientListAdapter.java
com.fyp.resilience.adapter.ConnectionListAdapter.java
com.fyp.resilience.adapter.FileListAdapter.java
com.fyp.resilience.connection.Connectable.java
com.fyp.resilience.connection.ServerDownloadConnectable.java
com.fyp.resilience.connection.ServerUploadConnectable.java
com.fyp.resilience.connection.UploadConnectable.java
com.fyp.resilience.connection.WifiDownloadConnectable.java
com.fyp.resilience.connection.WifiUploadConnectable.java
com.fyp.resilience.database.ResilienceDbHelper.java
com.fyp.resilience.database.ResilienceDbManager.java
com.fyp.resilience.database.model.DataPiece.java
com.fyp.resilience.database.model.DataWhole.java
com.fyp.resilience.event.ClientListChanged.java
com.fyp.resilience.event.ClientModified.java
com.fyp.resilience.event.ConnectionProgressChange.java
com.fyp.resilience.event.ConnectionStateChange.java
com.fyp.resilience.event.ConnectionsModified.java
com.fyp.resilience.event.PieceStateChange.java
com.fyp.resilience.event.ServerRegistrationChanged.java
com.fyp.resilience.event.ServerUploadFinished.java
com.fyp.resilience.event.WholeModified.java
com.fyp.resilience.event.WifiDownloadFinished.java
com.fyp.resilience.event.WifiUploadFinished.java
com.fyp.resilience.fragment.ClientsFragment.java
com.fyp.resilience.fragment.ConnectionsFragment.java
com.fyp.resilience.fragment.FilesFragment.java
com.fyp.resilience.interfaces.Messagable.java
com.fyp.resilience.interfaces.Partialable.java
com.fyp.resilience.proto.ProtoBuffSpecification.java
com.fyp.resilience.receiver.AbstractConnectivityBroadcastReceiver.java
com.fyp.resilience.receiver.BootReceiver.java
com.fyp.resilience.receiver.ConnectivityBroadcastReceiver.java
com.fyp.resilience.receiver.WiFiDirectBroadcastReceiver.java
com.fyp.resilience.register.RegisterRequestInitializer.java
com.fyp.resilience.register.RegisterRequest.java
com.fyp.resilience.register.RegisterScopes.java
com.fyp.resilience.register.Register.java
com.fyp.resilience.register.model.DeviceInfo.java
com.fyp.resilience.service.PieceUploadService.java
com.fyp.resilience.stream.PiecedRandomAccessFile.java
com.fyp.resilience.swarm.helper.NsdHelper.java
com.fyp.resilience.swarm.helper.SwarmHelperInterface.java
com.fyp.resilience.swarm.helper.WifiDirectSdHelper.java
com.fyp.resilience.swarm.model.SwarmClient.java
com.fyp.resilience.thread.ResilienceRunnable.java
com.fyp.resilience.thread.ResilienceThreadFactory.java
com.fyp.resilience.util.ConnectionUtils.java
com.fyp.resilience.util.Utils.java
com.fyp.resilience.view.ClientView.java
com.fyp.resilience.view.ConnectionView.java
com.fyp.resilience.view.FileView.java
com.fyp.resilience.view.PieceProgressIndicator.java
com.fyp.resilience.widerst.WiderstRequestInitializer.java
com.fyp.resilience.widerst.WiderstRequest.java
com.fyp.resilience.widerst.WiderstScopes.java
com.fyp.resilience.widerst.Widerst.java
com.fyp.resilience.widerst.model.DataPiecePartial.java
com.fyp.resilience.widerst.model.DataWholePartial.java
com.fyp.resilience.widerst.model.PostResponse.java
com.fyp.widerst.Constants.java
com.fyp.widerst.WiderstObjectifyService.java
com.fyp.widerst.backend.FileJoinerBackend.java
com.fyp.widerst.cron.CronJobServlet.java
com.fyp.widerst.endpoint.DataPieceEndpoint.java
com.fyp.widerst.endpoint.DeviceInfoEndpoint.java
com.fyp.widerst.entity.DataPiece.java
com.fyp.widerst.entity.DataWhole.java
com.fyp.widerst.entity.DeviceInfo.java
com.fyp.widerst.handler.BlobstoreUploadHandler.java
com.fyp.widerst.partial.DataPiecePartial.java
com.fyp.widerst.partial.DataWholePartial.java
com.fyp.widerst.response.PostResponse.java
com.fyp.widerst.servlet.WholeFileServer.java
com.fyp.widerst.util.DbHelper.java
com.fyp.widerst.util.GcmHelper.java