Home | History | Annotate | Download | only in action
      1 /*
      2  * Copyright (C) 2015 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package com.android.messaging.datamodel.action;
     18 
     19 import android.os.Parcel;
     20 import android.os.Parcelable;
     21 
     22 import com.android.messaging.sms.SmsReleaseStorage;
     23 import com.android.messaging.util.Assert;
     24 
     25 /**
     26  * Action used to handle low storage related issues on the device.
     27  */
     28 public class HandleLowStorageAction extends Action implements Parcelable {
     29     private static final int SUB_OP_CODE_CLEAR_MEDIA_MESSAGES = 100;
     30     private static final int SUB_OP_CODE_CLEAR_OLD_MESSAGES = 101;
     31 
     32     public static void handleDeleteMediaMessages(final long durationInMillis) {
     33         final HandleLowStorageAction action = new HandleLowStorageAction(
     34                 SUB_OP_CODE_CLEAR_MEDIA_MESSAGES, durationInMillis);
     35         action.start();
     36     }
     37 
     38     public static void handleDeleteOldMessages(final long durationInMillis) {
     39         final HandleLowStorageAction action = new HandleLowStorageAction(
     40                 SUB_OP_CODE_CLEAR_OLD_MESSAGES, durationInMillis);
     41         action.start();
     42     }
     43 
     44     private static final String KEY_SUB_OP_CODE = "sub_op_code";
     45     private static final String KEY_CUTOFF_DURATION_MILLIS = "cutoff_duration_millis";
     46 
     47     private HandleLowStorageAction(final int subOpcode, final long durationInMillis) {
     48         super();
     49         actionParameters.putInt(KEY_SUB_OP_CODE, subOpcode);
     50         actionParameters.putLong(KEY_CUTOFF_DURATION_MILLIS, durationInMillis);
     51     }
     52 
     53     @Override
     54     protected Object executeAction() {
     55         final int subOpCode = actionParameters.getInt(KEY_SUB_OP_CODE);
     56         final long durationInMillis = actionParameters.getLong(KEY_CUTOFF_DURATION_MILLIS);
     57         switch (subOpCode) {
     58             case SUB_OP_CODE_CLEAR_MEDIA_MESSAGES:
     59                 SmsReleaseStorage.deleteMessages(0, durationInMillis);
     60                 break;
     61 
     62             case SUB_OP_CODE_CLEAR_OLD_MESSAGES:
     63                 SmsReleaseStorage.deleteMessages(1, durationInMillis);
     64                 break;
     65 
     66             default:
     67                 Assert.fail("Unsupported action type!");
     68                 break;
     69         }
     70         return true;
     71     }
     72 
     73     private HandleLowStorageAction(final Parcel in) {
     74         super(in);
     75     }
     76 
     77     public static final Parcelable.Creator<HandleLowStorageAction> CREATOR
     78             = new Parcelable.Creator<HandleLowStorageAction>() {
     79         @Override
     80         public HandleLowStorageAction createFromParcel(final Parcel in) {
     81             return new HandleLowStorageAction(in);
     82         }
     83 
     84         @Override
     85         public HandleLowStorageAction[] newArray(final int size) {
     86             return new HandleLowStorageAction[size];
     87         }
     88     };
     89 
     90     @Override
     91     public void writeToParcel(final Parcel parcel, final int flags) {
     92         writeActionToParcel(parcel, flags);
     93     }
     94 }
     95