Android Open Source - ironcontrol-for-android Publish Task






From Project

Back to project page ironcontrol-for-android.

License

The source code is released under:

Apache License

If you think the Android project ironcontrol-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

/*
 * #%L/*ww w .j a v  a  2s .com*/
 * =====================================================
 *   _____                _     ____  _   _       _   _
 *  |_   _|_ __ _   _ ___| |_  / __ \| | | | ___ | | | |
 *    | | | '__| | | / __| __|/ / _` | |_| |/ __|| |_| |
 *    | | | |  | |_| \__ \ |_| | (_| |  _  |\__ \|  _  |
 *    |_| |_|   \__,_|___/\__|\ \__,_|_| |_||___/|_| |_|
 *                             \____/
 * 
 * =====================================================
 * 
 * Hochschule Hannover
 * (University of Applied Sciences and Arts, Hannover)
 * Faculty IV, Dept. of Computer Science
 * Ricklinger Stadtweg 118, 30459 Hannover, Germany
 * 
 * Email: trust@f4-i.fh-hannover.de
 * Website: http://trust.f4.hs-hannover.de/
 * 
 * This file is part of ironcontrol for android, version 1.0.1, implemented by the Trust@HsH research group at the Hochschule Hannover.
 * %%
 * Copyright (C) 2013 Trust@HsH
 * %%
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * #L%
 */
package de.hshannover.f4.trust.ironcontrol.asynctask;

import java.util.HashMap;

import android.app.ProgressDialog;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.os.AsyncTask;
import android.widget.Toast;
import de.hshannover.f4.trust.ifmapj.exception.IfmapErrorResult;
import de.hshannover.f4.trust.ifmapj.exception.IfmapException;
import de.hshannover.f4.trust.ifmapj.messages.MetadataLifetime;
import de.hshannover.f4.trust.ifmapj.metadata.Cardinality;
import de.hshannover.f4.trust.ironcontrol.R;
import de.hshannover.f4.trust.ironcontrol.database.DBContentProvider;
import de.hshannover.f4.trust.ironcontrol.database.entities.Requests;
import de.hshannover.f4.trust.ironcontrol.database.entities.VendorMetadata;
import de.hshannover.f4.trust.ironcontrol.logger.Level;
import de.hshannover.f4.trust.ironcontrol.logger.Logger;
import de.hshannover.f4.trust.ironcontrol.logger.LoggerFactory;
import de.hshannover.f4.trust.ironcontrol.logic.RequestsController;
import de.hshannover.f4.trust.ironcontrol.logic.data.Operation;
import de.hshannover.f4.trust.ironcontrol.logic.data.PublishRequestData;
import de.hshannover.f4.trust.ironcontrol.view.util.Util;

/**
 * AsyncTask to publish in background and inform the user.
 * @author Marcel Reichenbach
 * @version 1.0
 */

public class PublishTask extends AsyncTask<Void, Void, Void> {

  private static final Logger logger = LoggerFactory.getLogger(PublishTask.class);

  public static final String MASSAGEUPDATE = "Update...";
  public static final String MASSAGENOTIFY = "Notify...";
  public static final String MASSAGEDELETE = "Delete...";

  private ProgressDialog pd;
  private Context context;

  private PublishRequestData data;

  private String[] selectedRowIds;
  private Operation operation;
  private boolean multi;

  private String error;

  public PublishTask(Context context, PublishRequestData data){
    init(context);

    this.data = data;

    switch(data.getOperation()){
    case UPDATE: pd.setMessage(MASSAGEUPDATE);
    break;
    case NOTIFY: pd.setMessage(MASSAGENOTIFY);
    break;
    case DELETE: pd.setMessage(MASSAGEDELETE);
    break;
    default: logger.log(Level.WARN, context.getResources().getString(R.string.wrongButtonID));
    break;
    }
    logger.log(Level.DEBUG, "...NEW");
  }

  public PublishTask(Context context, String[] selectedRowIds, int buttonType, boolean multi){
    logger.log(Level.DEBUG, "NEW... whith "+ selectedRowIds.length +" rowIDs");

    init(context);

    this.selectedRowIds = selectedRowIds;
    this.multi = multi;
    this.operation = Operation.valueOf(buttonType);

    switch(buttonType){
    case R.id.bPublishUpdate: pd.setMessage(MASSAGEUPDATE);
    break;
    case R.id.bPublishNotify: pd.setMessage(MASSAGENOTIFY);
    break;
    case R.id.bPublishDelete: pd.setMessage(MASSAGEDELETE);
    break;
    default: logger.log(Level.WARN, context.getResources().getString(R.string.wrongButtonID));
    break;
    }
    logger.log(Level.DEBUG, "...NEW");
  }

  private void init(Context context){
    this.context = context;
    pd= new ProgressDialog(context);
  }

  @Override
  protected void onPreExecute() {
    logger.log(Level.DEBUG, "onPreExecute()...");
    super.onPreExecute();
    pd.show();
    logger.log(Level.DEBUG, "...onPreExecute()");
  }

  @Override
  protected Void doInBackground(Void... params) {
    Thread.currentThread().setName(PublishTask.class.getSimpleName());
    logger.log(Level.DEBUG, "doInBackground()...");

    try {
      if(data != null){      // For a not saved publish
        RequestsController.createPublish(data);
      } else if(multi){      // saved multiPublish

        PublishRequestData[] requestData = new PublishRequestData[selectedRowIds.length];

        for(int i=0; i < selectedRowIds.length; i++){
          requestData[i] = buildRequestData(selectedRowIds[i]);
        }

        RequestsController.createPublish(requestData);

      } else {          // saved single Publish

        for (String selectedRowId : selectedRowIds) {
          RequestsController.createPublish(buildRequestData(selectedRowId));
        }
      }
    } catch (IfmapErrorResult e) {
      error = e.getErrorCode().toString();
    } catch (IfmapException e) {
      error = e.getDescription();
    } catch (Exception e) {
      error = e.toString();
    }
    logger.log(Level.DEBUG, "...doInBackground()");
    return null;
  }

  private Cursor getCursor(Uri uri){
    return context.getContentResolver().query(uri, null, null, null, null);
  }

  private PublishRequestData buildRequestData(String id) {
    logger.log(Level.DEBUG, "buildRequestData() rowId= " +id+ "...");

    String metadata = null;
    String identifier1 = null;
    String identifier2 = null;
    String identifier1Value = null;
    String identifier2Value = null;
    String sLifeTime = null;
    MetadataLifetime lifeTime = null;

    Uri publish_uri = Uri.parse(DBContentProvider.PUBLISH_URI + "/" + id);

    Cursor cursor = getCursor(publish_uri);

    if(cursor.getCount() == 1 && cursor.moveToNext()){

      int metadata_Index = cursor.getColumnIndexOrThrow(Requests.COLUMN_METADATA);
      int identifier1_Index = cursor.getColumnIndexOrThrow(Requests.COLUMN_IDENTIFIER1);
      int identifier2_Index = cursor.getColumnIndexOrThrow(Requests.COLUMN_IDENTIFIER2);
      int identifier1Value_Index = cursor.getColumnIndexOrThrow(Requests.COLUMN_IDENTIFIER1_Value);
      int identifier2Value_Index = cursor.getColumnIndexOrThrow(Requests.COLUMN_IDENTIFIER2_Value);
      int lifeTime_Index = cursor.getColumnIndexOrThrow(Requests.COLUMN_LIFE_TIME);

      metadata = cursor.getString(metadata_Index);
      identifier1 = cursor.getString(identifier1_Index);
      identifier2 = cursor.getString(identifier2_Index);
      identifier1Value = cursor.getString(identifier1Value_Index);
      identifier2Value = cursor.getString(identifier2Value_Index);
      sLifeTime = cursor.getString(lifeTime_Index);

      lifeTime = MetadataLifetime.valueOf(sLifeTime);

    } else {
      logger.log(Level.WARN, context.getResources().getString(R.string.wrongCursorCount));
    }

    cursor.close();

    HashMap<String, String> metaAttributes = Util.getMetadataAttributes(context, id);

    PublishRequestData data = new PublishRequestData();
    data.setOperation(operation);
    data.setIdentifier1(identifier1);
    data.setIdentifier2(identifier2);
    data.setIdentifier1Value(identifier1Value);
    data.setIdentifier2Value(identifier2Value);
    data.setLifeTime(lifeTime);
    data.setMetaName(metadata);
    data.setAttributes(metaAttributes);

    // For vendorMetadata
    if(metaAttributes.containsKey(VendorMetadata.COLUMN_CARDINALITY)){

      data.setVendorMetaPrefix(metaAttributes.get(VendorMetadata.COLUMN_PREFIX));
      data.setVendorMetaUri(metaAttributes.get(VendorMetadata.COLUMN_URI));
      data.setVendorCardinality(Cardinality.valueOf(metaAttributes.get(VendorMetadata.COLUMN_CARDINALITY)));

      metaAttributes.remove(VendorMetadata.COLUMN_PREFIX);
      metaAttributes.remove(VendorMetadata.COLUMN_URI);
      metaAttributes.remove(VendorMetadata.COLUMN_CARDINALITY);
    }

    logger.log(Level.DEBUG, "...buildRequestData()");
    return data;
  }

  @Override
  protected void onPostExecute(Void result) {
    logger.log(Level.DEBUG, "onPostExecute()...");

    pd.dismiss();

    if(error == null){
      Toast.makeText(context, R.string.publishReceived, Toast.LENGTH_SHORT).show();
      logger.log(Level.INFO, context.getResources().getString(R.string.publishReceived));
    }else {
      Toast.makeText(context, error, Toast.LENGTH_SHORT).show();
    }

    logger.log(Level.DEBUG, "...onPostExecute()");
  }
}




Java Source Code List

de.hshannover.f4.trust.ironcontrol.asynctask.ConnectionTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.PDP.java
de.hshannover.f4.trust.ironcontrol.asynctask.PublishTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.PublishTestTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.PurgePublisherTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.SearchTask.java
de.hshannover.f4.trust.ironcontrol.asynctask.SubscriptionTask.java
de.hshannover.f4.trust.ironcontrol.database.DBContentProvider.java
de.hshannover.f4.trust.ironcontrol.database.DatabaseHelper.java
de.hshannover.f4.trust.ironcontrol.database.entities.AbstractEntity.java
de.hshannover.f4.trust.ironcontrol.database.entities.Attributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.Connections.java
de.hshannover.f4.trust.ironcontrol.database.entities.IdentifierAttributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.Identifier.java
de.hshannover.f4.trust.ironcontrol.database.entities.MetaAttributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.Requests.java
de.hshannover.f4.trust.ironcontrol.database.entities.Responses.java
de.hshannover.f4.trust.ironcontrol.database.entities.ResultItems.java
de.hshannover.f4.trust.ironcontrol.database.entities.ResultMetaAttributes.java
de.hshannover.f4.trust.ironcontrol.database.entities.ResultMetadata.java
de.hshannover.f4.trust.ironcontrol.database.entities.VendorMetadata.java
de.hshannover.f4.trust.ironcontrol.exceptions.IronControlUncaughtExceptionHandler.java
de.hshannover.f4.trust.ironcontrol.logger.Level.java
de.hshannover.f4.trust.ironcontrol.logger.LogData.java
de.hshannover.f4.trust.ironcontrol.logger.LogReceiver.java
de.hshannover.f4.trust.ironcontrol.logger.LoggerFactory.java
de.hshannover.f4.trust.ironcontrol.logger.Logger.java
de.hshannover.f4.trust.ironcontrol.logger.appander.Appender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogCatAppender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogFileAppender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogListAppender.java
de.hshannover.f4.trust.ironcontrol.logger.appander.LogToastAppender.java
de.hshannover.f4.trust.ironcontrol.logic.Connection.java
de.hshannover.f4.trust.ironcontrol.logic.KeystoreManager.java
de.hshannover.f4.trust.ironcontrol.logic.RequestsController.java
de.hshannover.f4.trust.ironcontrol.logic.ResultNotificationManager.java
de.hshannover.f4.trust.ironcontrol.logic.StoredResponses.java
de.hshannover.f4.trust.ironcontrol.logic.SubscriptionPoller.java
de.hshannover.f4.trust.ironcontrol.logic.data.BuildIdetifiers.java
de.hshannover.f4.trust.ironcontrol.logic.data.Operation.java
de.hshannover.f4.trust.ironcontrol.logic.data.PollReceiver.java
de.hshannover.f4.trust.ironcontrol.logic.data.PollSender.java
de.hshannover.f4.trust.ironcontrol.logic.data.PublishRequestData.java
de.hshannover.f4.trust.ironcontrol.logic.data.RequestData.java
de.hshannover.f4.trust.ironcontrol.logic.data.SearchRequestData.java
de.hshannover.f4.trust.ironcontrol.logic.data.SubscribeRequestData.java
de.hshannover.f4.trust.ironcontrol.view.AdvancedRequestFragment.java
de.hshannover.f4.trust.ironcontrol.view.ConnectionFragmentActivity.java
de.hshannover.f4.trust.ironcontrol.view.MainActivity.java
de.hshannover.f4.trust.ironcontrol.view.MetadataBuilderActivity.java
de.hshannover.f4.trust.ironcontrol.view.PublishActivity.java
de.hshannover.f4.trust.ironcontrol.view.SearchButtonFragment.java
de.hshannover.f4.trust.ironcontrol.view.SearchFragmentActivity.java
de.hshannover.f4.trust.ironcontrol.view.SettingsActivity.java
de.hshannover.f4.trust.ironcontrol.view.SimpleRequestFragment.java
de.hshannover.f4.trust.ironcontrol.view.SubscribeButtonFragment.java
de.hshannover.f4.trust.ironcontrol.view.SubscribeFragmentActivity.java
de.hshannover.f4.trust.ironcontrol.view.TabFragment.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceDialogEvent.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceListDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceListEvent.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoicePublishDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceRemoveDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceSearchDialog.java
de.hshannover.f4.trust.ironcontrol.view.dialogs.MultichoiceSubscribeDialog.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListHierarchyActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListOverviewActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResponsesActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResultItemsActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResultMetaActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListResultMetaAttributesActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListSavedConnectionsActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListSavedPublishsActivity.java
de.hshannover.f4.trust.ironcontrol.view.list_activities.ListVendorMetadataActivity.java
de.hshannover.f4.trust.ironcontrol.view.logger.LoggerListActivity.java
de.hshannover.f4.trust.ironcontrol.view.logger.LoggerListArrayAdapter.java
de.hshannover.f4.trust.ironcontrol.view.logger.LoggerPopUp.java
de.hshannover.f4.trust.ironcontrol.view.util.MetaDataEditText.java
de.hshannover.f4.trust.ironcontrol.view.util.MetaDataLinearLayout.java
de.hshannover.f4.trust.ironcontrol.view.util.MetadataValueFieldsBuilder.java
de.hshannover.f4.trust.ironcontrol.view.util.Node.java
de.hshannover.f4.trust.ironcontrol.view.util.PopUpEvent.java
de.hshannover.f4.trust.ironcontrol.view.util.PopUp.java
de.hshannover.f4.trust.ironcontrol.view.util.PromptSpinnerAdapter.java
de.hshannover.f4.trust.ironcontrol.view.util.RequiredSpinnerAdapter.java
de.hshannover.f4.trust.ironcontrol.view.util.SavePopUp.java
de.hshannover.f4.trust.ironcontrol.view.util.Util.java
de.hshannover.f4.trust.ironcontrol.view.util.ValidSpinnerAdapter.java