// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/exceptions/CustomException.java
// public class CustomException extends Exception {
//     public CustomException(String detailMessage) {
//         super(detailMessage);
//     }
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/executors/Interactor.java
// public interface Interactor {
//     void run() throws CustomException;
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/executors/InteractorExecutor.java
// public interface InteractorExecutor {
//     void run(Interactor interactor) throws CustomException;
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/executors/MainThread.java
// public interface MainThread {
//     void post(final Runnable runnable);
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/models/Rate.java
// public class Rate {
//     @SerializedName("from")
//     private String fromCurrency;
//     @SerializedName("rate")
//     private String rate;
//     @SerializedName("to")
//     private String toCurrency;
// 
//     public String getFromCurrency() {
//         return fromCurrency;
//     }
// 
//     public String getRate() {
//         return rate;
//     }
// 
//     public String getToCurrency() {
//         return toCurrency;
//     }
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/models/Transaction.java
// public class Transaction {
// 
//     @SerializedName("sku")
//     private String skuIdentifier;
// 
//     @SerializedName("amount")
//     private String amountPerTransaction;
// 
//     @SerializedName("currency")
//     private String currency;
// 
//     public String getSkuIdentifier() {
//         return skuIdentifier;
//     }
// 
//     public String getAmountPerTransaction() {
//         return amountPerTransaction;
//     }
// 
//     public String getCurrency() {
//         return currency;
//     }
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/repository/DataRepository.java
// public interface DataRepository<R, T> {
// 
//     /**
//      * to get Rates List
//      **/
//     List<R> getRatesList(String path) throws CustomException;
// 
//     /**
//      * to get Transactions list
//      **/
//     List<T> getTransactionsList(String path) throws CustomException;
// 
//     /**
//      * to get Transactions per product's SKU
//      **/
//     List<T> getTransactionsPerSku(String mPathTransactions, String mSku);
// 
//     /**
//      * to save Transactions indexed per product's SKU
//      **/
//     boolean saveTransactions(Map<String, List<T>> map);
// }


import com.raulh82vlc.TransactionsViewer.domain.exceptions.CustomException;
import com.raulh82vlc.TransactionsViewer.domain.executors.Interactor;
import com.raulh82vlc.TransactionsViewer.domain.executors.InteractorExecutor;
import com.raulh82vlc.TransactionsViewer.domain.executors.MainThread;
import com.raulh82vlc.TransactionsViewer.domain.models.Rate;
import com.raulh82vlc.TransactionsViewer.domain.models.Transaction;
import com.raulh82vlc.TransactionsViewer.domain.repository.DataRepository;
import java.util.List;
import javax.inject.Inject;
/*
 * Copyright (C) 2017 Raul Hernandez Lopez @raulh82vlc
 *
 * 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.
 */

package com.raulh82vlc.TransactionsViewer.domain.interactors;




/**
 * Implementation of the Get specific details of a movie
 *
 * @author Raul Hernandez Lopez
 */
public class GetTransactionListInteractorImpl implements GetTransactionListInteractor, Interactor {

    private InteractorExecutor executor;
    private MainThread mainThread;
    private DataRepository<Rate, Transaction> repository;
    private GetTransactionsListCallback callback;
    private String path;

    @Inject
    GetTransactionListInteractorImpl(InteractorExecutor executor,
                                     MainThread mainThread,
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/exceptions/CustomException.java
// public class CustomException extends Exception {
//     public CustomException(String detailMessage) {
//         super(detailMessage);
//     }
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/executors/Interactor.java
// public interface Interactor {
//     void run() throws CustomException;
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/executors/InteractorExecutor.java
// public interface InteractorExecutor {
//     void run(Interactor interactor) throws CustomException;
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/executors/MainThread.java
// public interface MainThread {
//     void post(final Runnable runnable);
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/models/Rate.java
// public class Rate {
//     @SerializedName("from")
//     private String fromCurrency;
//     @SerializedName("rate")
//     private String rate;
//     @SerializedName("to")
//     private String toCurrency;
// 
//     public String getFromCurrency() {
//         return fromCurrency;
//     }
// 
//     public String getRate() {
//         return rate;
//     }
// 
//     public String getToCurrency() {
//         return toCurrency;
//     }
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/models/Transaction.java
// public class Transaction {
// 
//     @SerializedName("sku")
//     private String skuIdentifier;
// 
//     @SerializedName("amount")
//     private String amountPerTransaction;
// 
//     @SerializedName("currency")
//     private String currency;
// 
//     public String getSkuIdentifier() {
//         return skuIdentifier;
//     }
// 
//     public String getAmountPerTransaction() {
//         return amountPerTransaction;
//     }
// 
//     public String getCurrency() {
//         return currency;
//     }
// }
// 
// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/repository/DataRepository.java
// public interface DataRepository<R, T> {
// 
//     /**
//      * to get Rates List
//      **/
//     List<R> getRatesList(String path) throws CustomException;
// 
//     /**
//      * to get Transactions list
//      **/
//     List<T> getTransactionsList(String path) throws CustomException;
// 
//     /**
//      * to get Transactions per product's SKU
//      **/
//     List<T> getTransactionsPerSku(String mPathTransactions, String mSku);
// 
//     /**
//      * to save Transactions indexed per product's SKU
//      **/
//     boolean saveTransactions(Map<String, List<T>> map);
// }


// Path: domain/src/main/java/com/raulh82vlc/TransactionsViewer/domain/interactors/GetTransactionListInteractorImpl.java
import com.raulh82vlc.TransactionsViewer.domain.exceptions.CustomException;
import com.raulh82vlc.TransactionsViewer.domain.executors.Interactor;
import com.raulh82vlc.TransactionsViewer.domain.executors.InteractorExecutor;
import com.raulh82vlc.TransactionsViewer.domain.executors.MainThread;
import com.raulh82vlc.TransactionsViewer.domain.models.Rate;
import com.raulh82vlc.TransactionsViewer.domain.models.Transaction;
import com.raulh82vlc.TransactionsViewer.domain.repository.DataRepository;
import java.util.List;
import javax.inject.Inject;

/*
 * Copyright (C) 2017 Raul Hernandez Lopez @raulh82vlc
 *
 * 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.
 */

package com.raulh82vlc.TransactionsViewer.domain.interactors;




/**
 * Implementation of the Get specific details of a movie
 *
 * @author Raul Hernandez Lopez
 */
public class GetTransactionListInteractorImpl implements GetTransactionListInteractor, Interactor {

    private InteractorExecutor executor;
    private MainThread mainThread;
    private DataRepository<Rate, Transaction> repository;
    private GetTransactionsListCallback callback;
    private String path;

    @Inject
    GetTransactionListInteractorImpl(InteractorExecutor executor,
                                     MainThread mainThread,
                                     DataRepository repository) {