diff --git a/src/main/java/com/owncloud/android/media/MediaService.java b/src/main/java/com/owncloud/android/media/MediaService.java index 9fc75e2d96..afa8f59e04 100644 --- a/src/main/java/com/owncloud/android/media/MediaService.java +++ b/src/main/java/com/owncloud/android/media/MediaService.java @@ -61,6 +61,8 @@ import java.io.IOException; import java.lang.ref.WeakReference; import androidx.core.app.NotificationCompat; +import lombok.Getter; +import lombok.Setter; /** @@ -101,10 +103,10 @@ public class MediaService extends Service implements OnCompletionListener, OnPre private static final float DUCK_VOLUME = 0.1f; /** Media player instance */ - private MediaPlayer mPlayer; + @Getter private MediaPlayer player; /** Reference to the system AudioManager */ - private AudioManager mAudioManager; + private AudioManager audioManager; /** Values to indicate the state of the service */ @@ -116,7 +118,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre } /** Current state */ - private State mState = State.STOPPED; + @Getter private State state = State.STOPPED; /** Possible focus values */ enum AudioFocus { @@ -126,36 +128,36 @@ public class MediaService extends Service implements OnCompletionListener, OnPre } /** Current focus state */ - private AudioFocus mAudioFocus = AudioFocus.NO_FOCUS; + private AudioFocus audioFocus = AudioFocus.NO_FOCUS; /** Wifi lock kept to prevents the device from shutting off the radio when streaming a file. */ - private WifiLock mWifiLock; + private WifiLock wifiLock; private static final String MEDIA_WIFI_LOCK_TAG = MY_PACKAGE + ".WIFI_LOCK"; /** Notification to keep in the notification bar while a song is playing */ - private NotificationManager mNotificationManager; + private NotificationManager notificationManager; /** File being played */ - private OCFile mFile; + @Getter private OCFile currentFile; /** Account holding the file being played */ - private Account mAccount; + private Account account; /** Flag signaling if the audio should be played immediately when the file is prepared */ - protected boolean mPlayOnPrepared; + protected boolean playOnPrepared; /** Position, in milliseconds, where the audio should be started */ - private int mStartPosition; + private int startPosition; /** Interface to access the service through binding */ - private IBinder mBinder; + private IBinder binder; /** Control panel shown to the user to control the playback, to register through binding */ - private MediaControlView mMediaController; + @Getter @Setter private MediaControlView mediaController; /** Notification builder to create notifications, new reuse way since Android 6 */ - private NotificationCompat.Builder mNotificationBuilder; + private NotificationCompat.Builder notificationBuilder; /** * Helper method to get an error message suitable to show to users for errors occurred in media playback, @@ -236,14 +238,14 @@ public class MediaService extends Service implements OnCompletionListener, OnPre super.onCreate(); Log_OC.d(TAG, "Creating ownCloud media service"); - mWifiLock = ((WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE)). + wifiLock = ((WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE)). createWifiLock(WifiManager.WIFI_MODE_FULL, MEDIA_WIFI_LOCK_TAG); - mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); - mNotificationBuilder = new NotificationCompat.Builder(this); - mNotificationBuilder.setColor(ThemeUtils.primaryColor(this)); - mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE); - mBinder = new MediaServiceBinder(this); + notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); + notificationBuilder = new NotificationCompat.Builder(this); + notificationBuilder.setColor(ThemeUtils.primaryColor(this)); + audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); + binder = new MediaServiceBinder(this); } @@ -255,10 +257,9 @@ public class MediaService extends Service implements OnCompletionListener, OnPre @Override public int onStartCommand(Intent intent, int flags, int startId) { String action = intent.getAction(); - if (action.equals(ACTION_PLAY_FILE)) { + if (ACTION_PLAY_FILE.equals(action)) { processPlayFileRequest(intent); - - } else if (action.equals(ACTION_STOP_ALL)) { + } else if (ACTION_STOP_ALL.equals(action)) { processStopRequest(true); } @@ -274,11 +275,11 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * @param intent Intent received in the request with the data to identify the file to play. */ private void processPlayFileRequest(Intent intent) { - if (mState != State.PREPARING) { - mFile = intent.getExtras().getParcelable(EXTRA_FILE); - mAccount = intent.getExtras().getParcelable(EXTRA_ACCOUNT); - mPlayOnPrepared = intent.getExtras().getBoolean(EXTRA_PLAY_ON_LOAD, false); - mStartPosition = intent.getExtras().getInt(EXTRA_START_POSITION, 0); + if (state != State.PREPARING) { + currentFile = intent.getExtras().getParcelable(EXTRA_FILE); + account = intent.getExtras().getParcelable(EXTRA_ACCOUNT); + playOnPrepared = intent.getExtras().getBoolean(EXTRA_PLAY_ON_LOAD, false); + startPosition = intent.getExtras().getInt(EXTRA_START_POSITION, 0); tryToGetAudioFocus(); playMedia(); } @@ -293,14 +294,14 @@ public class MediaService extends Service implements OnCompletionListener, OnPre tryToGetAudioFocus(); // actually play the song - if (mState == State.STOPPED) { + if (state == State.STOPPED) { // (re)start playback playMedia(); - } else if (mState == State.PAUSED) { + } else if (state == State.PAUSED) { // continue playback - mState = State.PLAYING; - setUpAsForeground(String.format(getString(R.string.media_state_playing), mFile.getFileName())); + state = State.PLAYING; + setUpAsForeground(String.format(getString(R.string.media_state_playing), currentFile.getFileName())); configAndStartMediaPlayer(); } } @@ -311,19 +312,19 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * if needed. reset the existing media player if one already exists. */ protected void createMediaPlayerIfNeeded() { - if (mPlayer == null) { - mPlayer = new MediaPlayer(); + if (player == null) { + player = new MediaPlayer(); // make sure the CPU won't go to sleep while media is playing - mPlayer.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); + player.setWakeMode(getApplicationContext(), PowerManager.PARTIAL_WAKE_LOCK); // the media player will notify the service when it's ready preparing, and when it's done playing - mPlayer.setOnPreparedListener(this); - mPlayer.setOnCompletionListener(this); - mPlayer.setOnErrorListener(this); + player.setOnPreparedListener(this); + player.setOnCompletionListener(this); + player.setOnErrorListener(this); } else { - mPlayer.reset(); + player.reset(); } } @@ -331,9 +332,9 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * Processes a request to pause the current playback */ protected void processPauseRequest() { - if (mState == State.PLAYING) { - mState = State.PAUSED; - mPlayer.pause(); + if (state == State.PLAYING) { + state = State.PAUSED; + player.pause(); releaseResources(false); // retain media player in pause // TODO polite audio focus, instead of keep it owned; or not? } @@ -343,13 +344,13 @@ public class MediaService extends Service implements OnCompletionListener, OnPre /** * Processes a request to stop the playback. * - * @param force When 'true', the playback is stopped no matter the value of mState + * @param force When 'true', the playback is stopped no matter the value of state */ protected void processStopRequest(boolean force) { - if (mState != State.PREPARING || force) { - mState = State.STOPPED; - mFile = null; - mAccount = null; + if (state != State.PREPARING || force) { + state = State.STOPPED; + currentFile = null; + account = null; releaseResources(true); giveUpAudioFocus(); stopSelf(); // service is no longer necessary @@ -368,15 +369,15 @@ public class MediaService extends Service implements OnCompletionListener, OnPre stopForeground(true); // stop and release the Media Player, if it's available - if (releaseMediaPlayer && mPlayer != null) { - mPlayer.reset(); - mPlayer.release(); - mPlayer = null; + if (releaseMediaPlayer && player != null) { + player.reset(); + player.release(); + player = null; } // release the Wifi lock, if holding it - if (mWifiLock.isHeld()) { - mWifiLock.release(); + if (wifiLock.isHeld()) { + wifiLock.release(); } } @@ -384,11 +385,11 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * Fully releases the audio focus. */ private void giveUpAudioFocus() { - if (mAudioFocus == AudioFocus.FOCUS - && mAudioManager != null - && AudioManager.AUDIOFOCUS_REQUEST_GRANTED == mAudioManager.abandonAudioFocus(this)) { + if (audioFocus == AudioFocus.FOCUS + && audioManager != null + && AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.abandonAudioFocus(this)) { - mAudioFocus = AudioFocus.NO_FOCUS; + audioFocus = AudioFocus.NO_FOCUS; } } @@ -397,25 +398,25 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * Reconfigures MediaPlayer according to audio focus settings and starts/restarts it. */ protected void configAndStartMediaPlayer() { - if (mPlayer == null) { - throw new IllegalStateException("mPlayer is NULL"); + if (player == null) { + throw new IllegalStateException("player is NULL"); } - if (mAudioFocus == AudioFocus.NO_FOCUS) { - if (mPlayer.isPlaying()) { - mPlayer.pause(); // have to be polite; but mState is not changed, to resume when focus is received again + if (audioFocus == AudioFocus.NO_FOCUS) { + if (player.isPlaying()) { + player.pause(); // have to be polite; but state is not changed, to resume when focus is received again } } else { - if (mAudioFocus == AudioFocus.NO_FOCUS_CAN_DUCK) { - mPlayer.setVolume(DUCK_VOLUME, DUCK_VOLUME); + if (audioFocus == AudioFocus.NO_FOCUS_CAN_DUCK) { + player.setVolume(DUCK_VOLUME, DUCK_VOLUME); } else { - mPlayer.setVolume(1.0f, 1.0f); // full volume + player.setVolume(1.0f, 1.0f); // full volume } - if (!mPlayer.isPlaying()) { - mPlayer.start(); + if (!player.isPlaying()) { + player.start(); } } } @@ -425,13 +426,13 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * Requests the audio focus to the Audio Manager */ private void tryToGetAudioFocus() { - if (mAudioFocus != AudioFocus.FOCUS - && mAudioManager != null - && AudioManager.AUDIOFOCUS_REQUEST_GRANTED == mAudioManager.requestAudioFocus(this, - AudioManager.STREAM_MUSIC, - AudioManager.AUDIOFOCUS_GAIN) + if (audioFocus != AudioFocus.FOCUS + && audioManager != null + && AudioManager.AUDIOFOCUS_REQUEST_GRANTED == audioManager.requestAudioFocus(this, + AudioManager.STREAM_MUSIC, + AudioManager.AUDIOFOCUS_GAIN) ) { - mAudioFocus = AudioFocus.FOCUS; + audioFocus = AudioFocus.FOCUS; } } @@ -440,60 +441,60 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * Starts playing the current media file. */ protected void playMedia() { - mState = State.STOPPED; + state = State.STOPPED; releaseResources(false); // release everything except MediaPlayer try { - if (mFile == null) { + if (currentFile == null) { Toast.makeText(this, R.string.media_err_nothing_to_play, Toast.LENGTH_LONG).show(); processStopRequest(true); return; - } else if (mAccount == null) { + } else if (account == null) { Toast.makeText(this, R.string.media_err_not_in_owncloud, Toast.LENGTH_LONG).show(); processStopRequest(true); return; } createMediaPlayerIfNeeded(); - mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); + player.setAudioStreamType(AudioManager.STREAM_MUSIC); - if (mFile.isDown()) { - mPlayer.setDataSource(mFile.getStoragePath()); + if (currentFile.isDown()) { + player.setDataSource(currentFile.getStoragePath()); preparePlayer(); } else { - OwnCloudAccount ocAccount = new OwnCloudAccount(mAccount, getBaseContext()); + OwnCloudAccount ocAccount = new OwnCloudAccount(account, getBaseContext()); OwnCloudClient client = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, getBaseContext()); - new LoadStreamUrl(this, client).execute(mFile.getLocalId()); + new LoadStreamUrl(this, client).execute(currentFile.getLocalId()); } } catch (AccountUtils.AccountNotFoundException | OperationCanceledException | AuthenticatorException e) { Log_OC.e(TAG, "Loading stream url not possible: " + e.getMessage()); } catch (SecurityException | IOException | IllegalStateException | IllegalArgumentException e) { - Log_OC.e(TAG, e.getClass().getSimpleName() + " playing " + mAccount.name + mFile.getRemotePath(), e); - Toast.makeText(this, String.format(getString(R.string.media_err_playing), mFile.getFileName()), + Log_OC.e(TAG, e.getClass().getSimpleName() + " playing " + account.name + currentFile.getRemotePath(), e); + Toast.makeText(this, String.format(getString(R.string.media_err_playing), currentFile.getFileName()), Toast.LENGTH_LONG).show(); processStopRequest(true); } } private void preparePlayer() { - mState = State.PREPARING; - setUpAsForeground(String.format(getString(R.string.media_state_loading), mFile.getFileName())); + state = State.PREPARING; + setUpAsForeground(String.format(getString(R.string.media_state_loading), currentFile.getFileName())); // starts preparing the media player in background - mPlayer.prepareAsync(); + player.prepareAsync(); } /** Called when media player is done playing current song. */ public void onCompletion(MediaPlayer player) { - Toast.makeText(this, String.format(getString(R.string.media_event_done), mFile.getFileName()), Toast.LENGTH_LONG).show(); - if (mMediaController != null) { + Toast.makeText(this, String.format(getString(R.string.media_event_done), currentFile.getFileName()), Toast.LENGTH_LONG).show(); + if (mediaController != null) { // somebody is still bound to the service player.seekTo(0); processPauseRequest(); - mMediaController.updatePausePlay(); + mediaController.updatePausePlay(); } else { // nobody is bound processStopRequest(true); @@ -507,19 +508,19 @@ public class MediaService extends Service implements OnCompletionListener, OnPre * Time to start. */ public void onPrepared(MediaPlayer player) { - mState = State.PLAYING; - updateNotification(String.format(getString(R.string.media_state_playing), mFile.getFileName())); - if (mMediaController != null) { - mMediaController.setEnabled(true); + state = State.PLAYING; + updateNotification(String.format(getString(R.string.media_state_playing), currentFile.getFileName())); + if (mediaController != null) { + mediaController.setEnabled(true); } - player.seekTo(mStartPosition); + player.seekTo(startPosition); configAndStartMediaPlayer(); - if (!mPlayOnPrepared) { + if (!playOnPrepared) { processPauseRequest(); } - if (mMediaController != null) { - mMediaController.updatePausePlay(); + if (mediaController != null) { + mediaController.updatePausePlay(); } } @@ -532,24 +533,24 @@ public class MediaService extends Service implements OnCompletionListener, OnPre // TODO check if updating the Intent is really necessary Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class); - showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, mFile); - showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount); + showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, currentFile); + showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, account); showDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - mNotificationBuilder.setContentIntent(PendingIntent.getActivity(getApplicationContext(), - (int) System.currentTimeMillis(), - showDetailsIntent, - PendingIntent.FLAG_UPDATE_CURRENT)); - mNotificationBuilder.setWhen(System.currentTimeMillis()); - mNotificationBuilder.setTicker(ticker); - mNotificationBuilder.setContentTitle(ticker); - mNotificationBuilder.setContentText(content); + notificationBuilder.setContentIntent(PendingIntent.getActivity(getApplicationContext(), + (int) System.currentTimeMillis(), + showDetailsIntent, + PendingIntent.FLAG_UPDATE_CURRENT)); + notificationBuilder.setWhen(System.currentTimeMillis()); + notificationBuilder.setTicker(ticker); + notificationBuilder.setContentTitle(ticker); + notificationBuilder.setContentText(content); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - mNotificationBuilder.setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_MEDIA); + notificationBuilder.setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_MEDIA); } - mNotificationManager.notify(R.string.media_notif_ticker, mNotificationBuilder.build()); + notificationManager.notify(R.string.media_notif_ticker, notificationBuilder.build()); } @@ -565,28 +566,28 @@ public class MediaService extends Service implements OnCompletionListener, OnPre /// creates status notification // TODO put a progress bar to follow the playback progress - mNotificationBuilder.setSmallIcon(R.drawable.ic_play_arrow); + notificationBuilder.setSmallIcon(R.drawable.ic_play_arrow); //mNotification.tickerText = text; - mNotificationBuilder.setWhen(System.currentTimeMillis()); - mNotificationBuilder.setOngoing(true); + notificationBuilder.setWhen(System.currentTimeMillis()); + notificationBuilder.setOngoing(true); /// includes a pending intent in the notification showing the details view of the file Intent showDetailsIntent = new Intent(this, FileDisplayActivity.class); - showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, mFile); - showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, mAccount); + showDetailsIntent.putExtra(FileActivity.EXTRA_FILE, currentFile); + showDetailsIntent.putExtra(FileActivity.EXTRA_ACCOUNT, account); showDetailsIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); - mNotificationBuilder.setContentIntent(PendingIntent.getActivity(getApplicationContext(), - (int) System.currentTimeMillis(), - showDetailsIntent, - PendingIntent.FLAG_UPDATE_CURRENT)); - mNotificationBuilder.setContentTitle(ticker); - mNotificationBuilder.setContentText(content); + notificationBuilder.setContentIntent(PendingIntent.getActivity(getApplicationContext(), + (int) System.currentTimeMillis(), + showDetailsIntent, + PendingIntent.FLAG_UPDATE_CURRENT)); + notificationBuilder.setContentTitle(ticker); + notificationBuilder.setContentText(content); if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) { - mNotificationBuilder.setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_MEDIA); + notificationBuilder.setChannelId(NotificationUtils.NOTIFICATION_CHANNEL_MEDIA); } - startForeground(R.string.media_notif_ticker, mNotificationBuilder.build()); + startForeground(R.string.media_notif_ticker, notificationBuilder.build()); } /** @@ -613,18 +614,18 @@ public class MediaService extends Service implements OnCompletionListener, OnPre public void onAudioFocusChange(int focusChange) { if (focusChange > 0) { // focus gain; check AudioManager.AUDIOFOCUS_* values - mAudioFocus = AudioFocus.FOCUS; + audioFocus = AudioFocus.FOCUS; // restart media player with new focus settings - if (mState == State.PLAYING) { + if (state == State.PLAYING) { configAndStartMediaPlayer(); } } else if (focusChange < 0) { // focus loss; check AudioManager.AUDIOFOCUS_* values boolean canDuck = AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK == focusChange; - mAudioFocus = canDuck ? AudioFocus.NO_FOCUS_CAN_DUCK : AudioFocus.NO_FOCUS; + audioFocus = canDuck ? AudioFocus.NO_FOCUS_CAN_DUCK : AudioFocus.NO_FOCUS; // start/restart/pause media player with new focus settings - if (mPlayer != null && mPlayer.isPlaying()) { + if (player != null && player.isPlaying()) { configAndStartMediaPlayer(); } } @@ -638,7 +639,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre */ @Override public void onDestroy() { - mState = State.STOPPED; + state = State.STOPPED; releaseResources(true); giveUpAudioFocus(); stopForeground(true); @@ -651,7 +652,7 @@ public class MediaService extends Service implements OnCompletionListener, OnPre */ @Override public IBinder onBind(Intent arg) { - return mBinder; + return binder; } @@ -662,53 +663,12 @@ public class MediaService extends Service implements OnCompletionListener, OnPre */ @Override public boolean onUnbind(Intent intent) { - if (mState == State.PAUSED || mState == State.STOPPED) { + if (state == State.PAUSED || state == State.STOPPED) { processStopRequest(false); } return false; // not accepting rebinding (default behaviour) } - - /** - * Accesses the current MediaPlayer instance in the service. - * - * To be handled carefully. Visibility is protected to be accessed only - * - * @return Current MediaPlayer instance handled by MediaService. - */ - protected MediaPlayer getPlayer() { - return mPlayer; - } - - - /** - * Accesses the current OCFile loaded in the service. - * - * @return The current OCFile loaded in the service. - */ - protected OCFile getCurrentFile() { - return mFile; - } - - - /** - * Accesses the current {@link State} of the MediaService. - * - * @return The current {@link State} of the MediaService. - */ - protected State getState() { - return mState; - } - - - protected void setMediaController(MediaControlView mediaController) { - mMediaController = mediaController; - } - - protected MediaControlView getMediaController() { - return mMediaController; - } - private static class LoadStreamUrl extends AsyncTask { private OwnCloudClient client; @@ -738,10 +698,10 @@ public class MediaService extends Service implements OnCompletionListener, OnPre if (mediaService != null && mediaService.getCurrentFile() != null) { if (url != null) { try { - mediaService.mPlayer.setDataSource(url); + mediaService.player.setDataSource(url); // prevent the Wifi from going to sleep when streaming - mediaService.mWifiLock.acquire(); + mediaService.wifiLock.acquire(); mediaService.preparePlayer(); } catch (IOException e) { Log_OC.e(TAG, "Streaming not possible: " + e.getMessage()); diff --git a/src/main/java/com/owncloud/android/media/MediaServiceBinder.java b/src/main/java/com/owncloud/android/media/MediaServiceBinder.java index dfabe8590a..2fd1e54c90 100644 --- a/src/main/java/com/owncloud/android/media/MediaServiceBinder.java +++ b/src/main/java/com/owncloud/android/media/MediaServiceBinder.java @@ -118,7 +118,7 @@ public class MediaServiceBinder extends Binder implements MediaController.MediaP @Override public boolean isPlaying() { MediaService.State currentState = mService.getState(); - return currentState == State.PLAYING || (currentState == State.PREPARING && mService.mPlayOnPrepared); + return currentState == State.PLAYING || (currentState == State.PREPARING && mService.playOnPrepared); } diff --git a/src/main/java/com/owncloud/android/operations/common/SyncOperation.java b/src/main/java/com/owncloud/android/operations/common/SyncOperation.java index a09f17eaf9..79c1902d50 100644 --- a/src/main/java/com/owncloud/android/operations/common/SyncOperation.java +++ b/src/main/java/com/owncloud/android/operations/common/SyncOperation.java @@ -1,4 +1,4 @@ -/** +/* * ownCloud Android client application * * @author David A. Velasco @@ -29,6 +29,8 @@ import com.owncloud.android.lib.common.operations.OnRemoteOperationListener; import com.owncloud.android.lib.common.operations.RemoteOperation; import com.owncloud.android.lib.common.operations.RemoteOperationResult; +import lombok.Getter; + /** * Operation which execution involves both interactions with an ownCloud server and @@ -37,15 +39,9 @@ import com.owncloud.android.lib.common.operations.RemoteOperationResult; * Provides methods to execute the operation both synchronously or asynchronously. */ public abstract class SyncOperation extends RemoteOperation { - //private static final String TAG = SyncOperation.class.getSimpleName(); - private FileDataStorageManager mStorageManager; - - public FileDataStorageManager getStorageManager() { - return mStorageManager; - } - + @Getter private FileDataStorageManager storageManager; /** * Synchronously executes the operation on the received ownCloud account. @@ -68,8 +64,8 @@ public abstract class SyncOperation extends RemoteOperation { throw new IllegalArgumentException("Trying to execute a sync operation with a " + "storage manager for a NULL account"); } - mStorageManager = storageManager; - return super.execute(mStorageManager.getAccount(), context); + this.storageManager = storageManager; + return super.execute(this.storageManager.getAccount(), context); } @@ -89,7 +85,7 @@ public abstract class SyncOperation extends RemoteOperation { throw new IllegalArgumentException("Trying to execute a sync operation with a " + "NULL storage manager"); } - mStorageManager = storageManager; + this.storageManager = storageManager; return super.execute(client); } @@ -119,7 +115,7 @@ public abstract class SyncOperation extends RemoteOperation { throw new IllegalArgumentException("Trying to execute a sync operation with a storage manager for a NULL account"); } - mStorageManager = storageManager; + storageManager = storageManager; return super.execute(storageManager.getAccount(), context, listener, listenerHandler, callerActivity); } @@ -142,9 +138,7 @@ public abstract class SyncOperation extends RemoteOperation { throw new IllegalArgumentException("Trying to execute a sync operation " + "with a NULL storage manager"); } - mStorageManager = storageManager; + this.storageManager = storageManager; return super.execute(client, listener, listenerHandler); } - - } diff --git a/src/main/java/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java b/src/main/java/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java index c8c0e14a78..f3de828405 100644 --- a/src/main/java/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java +++ b/src/main/java/com/owncloud/android/syncadapter/AbstractOwnCloudSyncAdapter.java @@ -1,10 +1,12 @@ -/** +/* * ownCloud Android client application * * @author sassman * @author David A. Velasco + * @author Andy Scherzinger * Copyright (C) 2011 Bartek Przybylski * Copyright (C) 2015 ownCloud Inc. + * Copyright (C) 2019 Andy Scherzinger * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2, @@ -17,7 +19,6 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * */ package com.owncloud.android.syncadapter; @@ -38,74 +39,41 @@ import com.owncloud.android.lib.common.accounts.AccountUtils.AccountNotFoundExce import java.io.IOException; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.Setter; + /** * Base synchronization adapter for ownCloud designed to be subclassed for different * resource types, like FileSync, ConcatsSync, CalendarSync, etc.. * * Implements the standard {@link AbstractThreadedSyncAdapter}. */ -public abstract class AbstractOwnCloudSyncAdapter extends +abstract class AbstractOwnCloudSyncAdapter extends AbstractThreadedSyncAdapter { - private AccountManager accountManager; - private Account account; - private ContentProviderClient mContentProviderClient; - private FileDataStorageManager mStoreManager; + @Getter @Setter private AccountManager accountManager; + @Getter @Setter private Account account; + @Getter @Setter private ContentProviderClient contentProviderClient; + @Getter @Setter private FileDataStorageManager storageManager; - private OwnCloudClient mClient; + @Getter(AccessLevel.PROTECTED) private OwnCloudClient client; - public AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize) { + AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize) { super(context, autoInitialize); this.setAccountManager(AccountManager.get(context)); } - public AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize, + AbstractOwnCloudSyncAdapter(Context context, boolean autoInitialize, boolean allowParallelSyncs) { super(context, autoInitialize, allowParallelSyncs); this.setAccountManager(AccountManager.get(context)); } - public AccountManager getAccountManager() { - return accountManager; - } - - public void setAccountManager(AccountManager accountManager) { - this.accountManager = accountManager; - } - - public Account getAccount() { - return account; - } - - public void setAccount(Account account) { - this.account = account; - } - - public ContentProviderClient getContentProviderClient() { - return mContentProviderClient; - } - - public void setContentProviderClient(ContentProviderClient contentProvider) { - this.mContentProviderClient = contentProvider; - } - - public void setStorageManager(FileDataStorageManager storage_manager) { - mStoreManager = storage_manager; - } - - public FileDataStorageManager getStorageManager() { - return mStoreManager; - } - - protected void initClientForCurrentAccount() throws OperationCanceledException, + void initClientForCurrentAccount() throws OperationCanceledException, AuthenticatorException, IOException, AccountNotFoundException { OwnCloudAccount ocAccount = new OwnCloudAccount(account, getContext()); - mClient = OwnCloudClientManagerFactory.getDefaultSingleton(). + client = OwnCloudClientManagerFactory.getDefaultSingleton(). getClientFor(ocAccount, getContext()); } - - protected OwnCloudClient getClient() { - return mClient; - } - -} \ No newline at end of file +} diff --git a/src/main/java/com/owncloud/android/syncadapter/FileSyncService.java b/src/main/java/com/owncloud/android/syncadapter/FileSyncService.java index ee701e55c4..d565796c60 100644 --- a/src/main/java/com/owncloud/android/syncadapter/FileSyncService.java +++ b/src/main/java/com/owncloud/android/syncadapter/FileSyncService.java @@ -1,4 +1,4 @@ -/** +/* * ownCloud Android client application * * @author Bartek Przybylski @@ -17,7 +17,6 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see . - * */ package com.owncloud.android.syncadapter; @@ -33,18 +32,18 @@ import android.os.IBinder; public class FileSyncService extends Service { // Storage for an instance of the sync adapter - private static FileSyncAdapter sSyncAdapter; + private static FileSyncAdapter syncAdapter; // Object to use as a thread-safe lock - private static final Object sSyncAdapterLock = new Object(); + private static final Object syncAdapterLock = new Object(); /* * {@inheritDoc} */ @Override public void onCreate() { - synchronized (sSyncAdapterLock) { - if (sSyncAdapter == null) { - sSyncAdapter = new FileSyncAdapter(getApplicationContext(), true); + synchronized (syncAdapterLock) { + if (syncAdapter == null) { + syncAdapter = new FileSyncAdapter(getApplicationContext(), true); } } } @@ -54,7 +53,7 @@ public class FileSyncService extends Service { */ @Override public IBinder onBind(Intent intent) { - return sSyncAdapter.getSyncAdapterBinder(); + return syncAdapter.getSyncAdapterBinder(); } }