Home | History | Annotate | Download | only in preferences
      1 /*
      2  * Copyright (C) 2012 Google Inc.
      3  * Licensed to The Android Open Source Project.
      4  *
      5  * Licensed under the Apache License, Version 2.0 (the "License");
      6  * you may not use this file except in compliance with the License.
      7  * You may obtain a copy of the License at
      8  *
      9  *      http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  * Unless required by applicable law or agreed to in writing, software
     12  * distributed under the License is distributed on an "AS IS" BASIS,
     13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  * See the License for the specific language governing permissions and
     15  * limitations under the License.
     16  */
     17 package com.android.mail.preferences;
     18 
     19 import android.content.Context;
     20 
     21 import java.util.concurrent.atomic.AtomicBoolean;
     22 
     23 /**
     24  * Interface to allow migrating preferences from other projects into the UnifiedEmail code, so apps
     25  * can slowly move their preferences into the shared code.
     26  */
     27 public abstract class BasePreferenceMigrator {
     28     /** If <code>true</code>, we have not attempted a migration since the app started. */
     29     private static final AtomicBoolean sMigrationNecessary = new AtomicBoolean(true);
     30 
     31     public final boolean performMigration(
     32             final Context context, final int oldVersion, final int newVersion) {
     33         // Ensure we only run this once
     34         if (sMigrationNecessary.getAndSet(false)) {
     35             migrate(context, oldVersion, newVersion);
     36             return true;
     37         }
     38 
     39         return false;
     40     }
     41 
     42     /**
     43      * Migrates preferences to UnifiedEmail.
     44      *
     45      * @param oldVersion The previous version of UnifiedEmail's preferences
     46      * @param newVersion The new version of UnifiedEmail's preferences
     47      */
     48     protected abstract void migrate(final Context context, int oldVersion, int newVersion);
     49 }
     50