public static IntentDataParameters parseData(Context context, Uri data) {
    IntentDataParameters parameters = new IntentDataParameters();

    // transaction type
    String transactionTypeName = data.getQueryParameter(PARAM_TRANSACTION_TYPE);
    TransactionTypes type = TransactionTypes.valueOf(transactionTypeName);
    if (type != null) parameters.transactionType = type;

    // account
    String accountName = data.getQueryParameter(PARAM_ACCOUNT);
    if (accountName != null) {
      AccountRepository account = new AccountRepository(context);
      int accountId = account.loadIdByName(accountName);
      parameters.accountId = accountId;
    }

    parameters.payeeName = data.getQueryParameter(PARAM_PAYEE);
    if (parameters.payeeName != null) {
      PayeeService payee = new PayeeService(context);
      int payeeId = payee.loadIdByName(parameters.payeeName);
      parameters.payeeId = payeeId;
    }

    String amount = data.getQueryParameter(PARAM_AMOUNT);
    parameters.amount = MoneyFactory.fromString(amount);

    parameters.categoryName = data.getQueryParameter(PARAM_CATEGORY);
    if (parameters.categoryName != null) {
      CategoryService category = new CategoryService(context);
      int categoryId = category.loadIdByName(parameters.categoryName);
      parameters.categoryId = categoryId;
    }

    return parameters;
  }