Android Open Source - dissertation-project Data Piece






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.database.model;
//w  w  w . j  a v  a2s.  co m
import java.io.File;

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

import com.fyp.resilience.event.PieceStateChange;
import com.fyp.resilience.interfaces.Messagable;
import com.fyp.resilience.interfaces.Partialable;
import com.fyp.resilience.proto.ProtoBuffSpecification.DataPieceMessage;
import com.fyp.resilience.util.Utils;
import com.fyp.resilience.widerst.model.DataPiecePartial;
import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable;

import de.greenrobot.event.EventBus;

@DatabaseTable(tableName = "data_piece")
public class DataPiece implements Partialable<DataPiecePartial>, Messagable<DataPieceMessage> {

    /**
     * A public static method used to build DataPiece objects
     * 
     * @return {@link DataPiece}
     */
    public static DataPiece getDataPiece(final int pieceNo, final DataWhole dataWhole, final long size) {
        return new DataPiece(pieceNo, dataWhole, size);
    }

    /* State constants */
    // Uploaded to Widerst
    public static final int STATE_UPLOADED_TO_SERVER = 0;

    // Uploaded to a device
    public static final int STATE_UPLOADED_TO_DEVICE = 1;

    // Currently no activity
    public static final int STATE_NONE = 2;

    // Something is currently using this piece
    public static final int STATE_IN_PROGRESS = 3;

    /* Column name constants */
    public static final String COL_STATE = "state";
    public static final String COL_PIECE_NO = "piece_number";
    public static final String COL_PIECE_KEY = "piece_key";
    public static final String COL_WHOLE_ID = "whole_id";
    public static final String COL_MD5_HASH = "md5_hash";
    public static final String COL_PIECE_URI = "piece_uri";
    public static final String COL_PIECE_SIZE = "piece_size";
    public static final String COL_RETRYABLE = "retryable";

    /* Database fields */
    @DatabaseField(columnName = COL_PIECE_KEY, id = true)
    private String mKey;

    @DatabaseField(columnName = COL_PIECE_NO)
    private int mPieceNo;

    @DatabaseField(columnName = COL_STATE)
    private int mState;

    @DatabaseField(columnName = COL_MD5_HASH)
    private String mHash;

    @DatabaseField(columnName = COL_PIECE_URI)
    private String mUri;

    @DatabaseField(columnName = COL_PIECE_SIZE)
    private long mSize;
    
    @DatabaseField(columnName = COL_RETRYABLE)
    private boolean mRetry;

    @DatabaseField(columnName = COL_WHOLE_ID, canBeNull = false, foreign = true)
    private DataWhole mDataWhole;

    /* Instance field */
    private File mFile;

    DataPiece() {
        /* Ormlite requires a constructor with no arguments */
    }

    private DataPiece(final int pieceNo, final DataWhole dataWhole, final long size) {
        mPieceNo = pieceNo;
        mState = STATE_NONE;
        mDataWhole = dataWhole;
        mKey = mDataWhole.getKey() + pieceNo;
        mHash = null;
        mSize = size;
        mRetry = false;
    }

    public String getKey() {
        return mKey;
    }

    public DataWhole getParent() {
        return mDataWhole;
    }

    public int getPieceNo() {
        return mPieceNo;
    }

    public String getHash() {
        return mHash;
    }

    public void setHash(final String hash) {
        mHash = hash;
    }

    public File getFile(final Context context) {
        if (null == mFile && null != mUri) {
            mFile = new File(Utils.getFilePathFromUri(context, Uri.parse(mUri)));
        }

        return mFile;
    }

    public String getUri() {
        return mUri;
    }

    public long getSize() {
        return mSize;
    }
    
    public void setRetry(final boolean retry) {
        mRetry = retry;
    }
    
    public boolean requiresRetry() {
        return mRetry;
    }
    
    public void setParent(final DataWhole dataWhole) {
        mDataWhole = dataWhole;
    }

    public void setUri(String uri) {
        mUri = uri;
    }

    /**
     * @return
     */
    public synchronized int getState() {
        return mState;
    }

    /**
     * @param state
     */
    public synchronized void setState(final int state) {
        mState = state;
        postEvent(new PieceStateChange(this));
    }

    /**
     * @param event
     */
    private void postEvent(final Object event) {
        EventBus.getDefault().post(event);
    }

    @Override
    public DataPiecePartial toPartial() {
        
        return new DataPiecePartial()
                .setKey(mKey)
                .setPieceNo(mPieceNo)
                .setWholeParent(mDataWhole.toPartial())
                .setHash(mHash)
                .setRetry(mRetry);
    }

    @Override
    public DataPieceMessage toMessage() {
        return DataPieceMessage.newBuilder()
                .setMd5Hash(mHash)
                .setPieceNo(mPieceNo)
                .setPieceSize(mSize)
                .build();
    }

    @Override
    public String toString() {
        return mKey;
    }
    
    @Override
    public boolean equals(Object o) {
        return mKey != null && mKey.contentEquals(((DataPiece) o).getKey());
    }
    
    @Override
    public int hashCode() {
        return mKey.hashCode();
    }
}




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