Android Open Source - Munin-for-Android Import Export Helper






From Project

Back to project page Munin-for-Android.

License

The source code is released under:

GNU General Public License

If you think the Android project Munin-for-Android 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.chteuchteu.munin.hlpr;
//www  . j av  a 2s  .c  o  m
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;

import com.chteuchteu.munin.MuninFoo;
import com.chteuchteu.munin.R;
import com.chteuchteu.munin.exc.ImportExportWebserviceException;
import com.chteuchteu.munin.obj.MuninMaster;
import com.chteuchteu.munin.obj.MuninPlugin;
import com.chteuchteu.munin.obj.MuninServer;
import com.chteuchteu.munin.ui.Activity_Servers;
import com.crashlytics.android.Crashlytics;

import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class ImportExportHelper {
  public static final String ENCRYPTION_SEED = "786547E9431EE";
  
  public static class Export {
    private static String sendExportRequest(String jsonString) {
      HttpClient httpClient = new DefaultHttpClient();
      HttpPost httpPost = new HttpPost(MuninFoo.IMPORT_EXPORT_URI + "?export");
      
      try {
        List<NameValuePair> nameValuePairs = new ArrayList<>(2);
        nameValuePairs.add(new BasicNameValuePair("dataString", jsonString));
        nameValuePairs.add(new BasicNameValuePair("version", String.valueOf(MuninFoo.IMPORT_EXPORT_VERSION)));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        
        // Execute HTTP Post Request
        HttpResponse response = httpClient.execute(httpPost);
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();
        for (String line; (line = reader.readLine()) != null;)
            builder.append(line).append("\n");
        
        String body = builder.toString();
        
        JSONObject jsonResult = new JSONObject(body);

        boolean success = jsonResult.getBoolean("success");

        if (success) {
          return jsonResult.getString("password");
        } else {
          String error = jsonResult.getString("error");
          Crashlytics.logException(new ImportExportWebserviceException("Error is " + error));
        }
        
        return null;
      } catch (ClientProtocolException e) {
        e.printStackTrace();
        return null;
      } catch (IOException e) {
        e.printStackTrace();
        return null;
      } catch (JSONException e) {
        e.printStackTrace();
        return null;
      }
    }
    
    public static class ExportRequestMaker extends AsyncTask<Void, Integer, Void> {
      private String jsonString;
      private boolean result;
      private String pswd;
      private ProgressDialog progressDialog;
      private Context context;
      
      public ExportRequestMaker (String jsonString, Context context) {
        super();
        this.jsonString = jsonString;
        this.result = false;
        this.context = context;
      }
      
      @Override
      protected void onPreExecute() {
        super.onPreExecute();
        
        this.progressDialog = ProgressDialog.show(context, "", context.getString(R.string.loading), true);
      }
      
      @Override
      protected Void doInBackground(Void... arg0) {
        pswd = sendExportRequest(jsonString);
        result = pswd != null && !pswd.equals("");
        
        return null;
      }
      
      @Override
      protected void onPostExecute(Void res) {
        this.progressDialog.dismiss();
        
        if (result)
          Activity_Servers.onExportSuccess(pswd);
        else
          Activity_Servers.onExportError();
      }
    }
  }
  
  public static class Import {
    public static void applyImportation(Context context, JSONObject jsonObject, String code) {
      ArrayList<MuninMaster> newMasters = JSONHelper.getMastersFromJSON(jsonObject, code);
      removeIds(newMasters);

      MuninFoo muninFooRef = MuninFoo.getInstance(context);
      
      // Add masters
      for (MuninMaster newMaster : newMasters) {
        // Check if master already added
        if (!muninFooRef.contains(newMaster)) {
          muninFooRef.getMasters().add(newMaster);
          for (MuninServer server : newMaster.getChildren())
            muninFooRef.addServer(server);

          muninFooRef.sqlite.insertMuninMaster(newMaster);
        }
      }
    }
    
    private static JSONObject sendImportRequest(String code) {
      HttpClient httpClient = new DefaultHttpClient();
      HttpPost httpPost = new HttpPost(MuninFoo.IMPORT_EXPORT_URI+"?import");

      try {
        List<NameValuePair> nameValuePairs = new ArrayList<>(2);
        nameValuePairs.add(new BasicNameValuePair("pswd", code));
        nameValuePairs.add(new BasicNameValuePair("version", String.valueOf(MuninFoo.IMPORT_EXPORT_VERSION)));
        httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        
        // Execute HTTP Post Request
        HttpResponse response = httpClient.execute(httpPost);
        BufferedReader reader = new BufferedReader(
            new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
        StringBuilder builder = new StringBuilder();
        for (String line; (line = reader.readLine()) != null;)
            builder.append(line).append("\n");
        
        JSONObject jsonResult = new JSONObject(builder.toString());
        
        boolean success = jsonResult.getBoolean("success");
        
        if (success) {
          return jsonResult.getJSONArray("data").getJSONObject(0);
        } else {
          String error = jsonResult.getString("error");
          if (!error.equals("006")) // Wrong password
            Crashlytics.logException(new ImportExportWebserviceException("Error is " + error));
        }
        
        return null;
      } catch (ClientProtocolException e) {
        e.printStackTrace();
        return null;
      } catch (IOException e) {
        e.printStackTrace();
        return null;
      } catch (JSONException e) {
        e.printStackTrace();
        return null;
      }
    }
    
    public static class ImportRequestMaker extends AsyncTask<Void, Integer, Void> {
      private JSONObject jsonObject;
      private String code;
      private boolean result;
      private Context context;
      private ProgressDialog progressDialog;
      
      public ImportRequestMaker (String code, Context context) {
        super();
        this.code = code;
        this.result = false;
        this.context = context;
      }
      
      @Override
      protected void onPreExecute() {
        super.onPreExecute();
        
        this.progressDialog = ProgressDialog.show(context, "", context.getString(R.string.loading), true);
      }
      
      @Override
      protected Void doInBackground(Void... arg0) {
        jsonObject = sendImportRequest(code);
        result = jsonObject != null;
        
        if (result)
          applyImportation(context, jsonObject, ENCRYPTION_SEED);
        
        return null;
      }
      
      @Override
      protected void onPostExecute(Void res) {
        this.progressDialog.dismiss();
        
        if (result)
          Activity_Servers.onImportSuccess();
        else
          Activity_Servers.onImportError();
      }
    }
  }
  
  /**
   * Removes the ids contained in the structure given as parameter
   */
  private static void removeIds(ArrayList<MuninMaster> masters) {
    for (MuninMaster master : masters) {
      master.setId(-1);
      for (MuninServer server : master.getChildren()) {
        server.setId(-1);
        server.isPersistant = false;
        for (MuninPlugin plugin : server.getPlugins())
          plugin.setId(-1);
      }
    }
  }
}




Java Source Code List

com.chteuchteu.munin.BootReceiver.java
com.chteuchteu.munin.CustomSSLFactory.java
com.chteuchteu.munin.MuninFoo.java
com.chteuchteu.munin.Service_Notifications.java
com.chteuchteu.munin.adptr.Adapter_ExpandableListView.java
com.chteuchteu.munin.adptr.Adapter_GraphView.java
com.chteuchteu.munin.adptr.Adapter_IconList.java
com.chteuchteu.munin.adptr.Adapter_SeparatedList.java
com.chteuchteu.munin.exc.ImportExportWebserviceException.java
com.chteuchteu.munin.exc.NullMuninFooException.java
com.chteuchteu.munin.exc.TrialExpirationDateReached.java
com.chteuchteu.munin.hlpr.BillingService.java
com.chteuchteu.munin.hlpr.DatabaseHelper.java
com.chteuchteu.munin.hlpr.DigestUtils.java
com.chteuchteu.munin.hlpr.DocumentationHelper.java
com.chteuchteu.munin.hlpr.DrawerHelper.java
com.chteuchteu.munin.hlpr.DynazoomHelper.java
com.chteuchteu.munin.hlpr.EncryptionHelper.java
com.chteuchteu.munin.hlpr.GridDownloadHelper.java
com.chteuchteu.munin.hlpr.I18nHelper.java
com.chteuchteu.munin.hlpr.ImportExportHelper.java
com.chteuchteu.munin.hlpr.JSONHelper.java
com.chteuchteu.munin.hlpr.MediaScannerUtil.java
com.chteuchteu.munin.hlpr.NetHelper.java
com.chteuchteu.munin.hlpr.SQLite.java
com.chteuchteu.munin.hlpr.Util.java
com.chteuchteu.munin.obj.AlertsWidget.java
com.chteuchteu.munin.obj.GraphWidget.java
com.chteuchteu.munin.obj.GridItem.java
com.chteuchteu.munin.obj.Grid.java
com.chteuchteu.munin.obj.HTTPResponse_Bitmap.java
com.chteuchteu.munin.obj.HTTPResponse.java
com.chteuchteu.munin.obj.Label.java
com.chteuchteu.munin.obj.MuninMaster.java
com.chteuchteu.munin.obj.MuninPlugin.java
com.chteuchteu.munin.obj.MuninServer.java
com.chteuchteu.munin.obj.SearchResult.java
com.chteuchteu.munin.ui.Activity_About.java
com.chteuchteu.munin.ui.Activity_AlertsPluginSelection.java
com.chteuchteu.munin.ui.Activity_Alerts.java
com.chteuchteu.munin.ui.Activity_GoPremium.java
com.chteuchteu.munin.ui.Activity_GraphView.java
com.chteuchteu.munin.ui.Activity_Grid.java
com.chteuchteu.munin.ui.Activity_Grids.java
com.chteuchteu.munin.ui.Activity_Label.java
com.chteuchteu.munin.ui.Activity_Labels.java
com.chteuchteu.munin.ui.Activity_Main.java
com.chteuchteu.munin.ui.Activity_Notifications.java
com.chteuchteu.munin.ui.Activity_Plugins.java
com.chteuchteu.munin.ui.Activity_Server.java
com.chteuchteu.munin.ui.Activity_ServersEdit.java
com.chteuchteu.munin.ui.Activity_Servers.java
com.chteuchteu.munin.ui.Activity_Settings.java
com.chteuchteu.munin.ui.HackyDrawerLayout.java
com.chteuchteu.munin.ui.MuninActivity.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_Configure.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_ViewsFactory.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_WidgetProvider.java
com.chteuchteu.munin.wdget.Widget_AlertsWidget_WidgetService.java
com.chteuchteu.munin.wdget.Widget_GraphWidget_Configure.java
com.chteuchteu.munin.wdget.Widget_GraphWidget_WidgetProvider.java
com.mobeta.android.dslv.DragSortController.java
com.mobeta.android.dslv.DragSortCursorAdapter.java
com.mobeta.android.dslv.DragSortItemViewCheckable.java
com.mobeta.android.dslv.DragSortItemView.java
com.mobeta.android.dslv.DragSortListView.java
com.mobeta.android.dslv.ResourceDragSortCursorAdapter.java
com.mobeta.android.dslv.SimpleDragSortCursorAdapter.java
com.mobeta.android.dslv.SimpleFloatViewManager.java
org.taptwo.android.widget.CircleFlowIndicator.java
org.taptwo.android.widget.FlowIndicator.java
org.taptwo.android.widget.TitleFlowIndicator.java
org.taptwo.android.widget.TitleProvider.java
org.taptwo.android.widget.ViewFlow.java
uk.co.senab.photoview.Compat.java
uk.co.senab.photoview.IPhotoView.java
uk.co.senab.photoview.PhotoViewAttacher.java
uk.co.senab.photoview.PhotoView.java
uk.co.senab.photoview.SDK16.java
uk.co.senab.photoview.ScrollerProxy.java
uk.co.senab.photoview.VersionedGestureDetector.java