/**
*
*/
package org.gcube.portlets.user.td.gwtservice.client.rpc;
import java.util.ArrayList;
import org.gcube.portlets.user.td.gwtservice.shared.codelisthelper.CodelistMappingSession;
import org.gcube.portlets.user.td.gwtservice.shared.csv.AvailableCharsetList;
import org.gcube.portlets.user.td.gwtservice.shared.csv.CSVExportSession;
import org.gcube.portlets.user.td.gwtservice.shared.csv.CSVImportSession;
import org.gcube.portlets.user.td.gwtservice.shared.csv.CheckCSVSession;
import org.gcube.portlets.user.td.gwtservice.shared.extract.ExtractCodelistSession;
import org.gcube.portlets.user.td.gwtservice.shared.file.FileUploadMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.file.HeaderPresence;
import org.gcube.portlets.user.td.gwtservice.shared.history.OpHistory;
import org.gcube.portlets.user.td.gwtservice.shared.history.RollBackSession;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitor;
import org.gcube.portlets.user.td.gwtservice.shared.monitor.OperationMonitorSession;
import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXExportSession;
import org.gcube.portlets.user.td.gwtservice.shared.sdmx.SDMXImportSession;
import org.gcube.portlets.user.td.gwtservice.shared.share.ShareInfo;
import org.gcube.portlets.user.td.gwtservice.shared.source.SDMXRegistrySource;
import org.gcube.portlets.user.td.gwtservice.shared.task.TaskResubmitSession;
import org.gcube.portlets.user.td.gwtservice.shared.task.TaskResumeSession;
import org.gcube.portlets.user.td.gwtservice.shared.task.ValidationsTasksMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateApplySession;
import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateData;
import org.gcube.portlets.user.td.gwtservice.shared.template.TemplateDeleteSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData;
import org.gcube.portlets.user.td.gwtservice.shared.tr.RefColumn;
import org.gcube.portlets.user.td.gwtservice.shared.tr.TabResource;
import org.gcube.portlets.user.td.gwtservice.shared.tr.TableData;
import org.gcube.portlets.user.td.gwtservice.shared.tr.batch.Occurrences;
import org.gcube.portlets.user.td.gwtservice.shared.tr.batch.OccurrencesForReplaceBatchColumnSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.batch.ReplaceBatchColumnSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.clone.CloneTabularResourceSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.AddColumnSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.DeleteColumnSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.LabelColumnSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.ReplaceColumnSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.column.type.ChangeColumnTypeSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.metadata.TRMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.tr.normalization.DenormalizationSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.normalization.NormalizationSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.open.TDOpenSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.paging.CodelistPagingLoadConfig;
import org.gcube.portlets.user.td.gwtservice.shared.tr.paging.CodelistPagingLoadResult;
import org.gcube.portlets.user.td.gwtservice.shared.tr.rows.DeleteRowsSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.rows.DuplicatesSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.rows.EditRowSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.table.ChangeTableTypeSession;
import org.gcube.portlets.user.td.gwtservice.shared.tr.table.metadata.TabMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.tr.table.metadata.TabValidationsMetadata;
import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Agencies;
import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Codelist;
import org.gcube.portlets.user.td.gwtservice.shared.tr.type.Dataset;
import org.gcube.portlets.user.td.gwtservice.shared.tr.union.UnionSession;
import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
/**
*
* @author "Giancarlo Panichi" g.panichi@isti.cnr.it
*
*/
public interface TDGWTServiceAsync {
public static TDGWTServiceAsync INSTANCE = (TDGWTServiceAsync) GWT
.create(TDGWTService.class);
void hello(AsyncCallback callback);
//TabularResource
void getCurrentTRId(AsyncCallback callback);
void createTabularResource(TabResource tabResource,AsyncCallback callback);
void removeTabularResource(TRId trId, AsyncCallback callback);
void isTabularResourceValid(TRId trId,AsyncCallback callback);
void getTabResourceInformation(AsyncCallback callback);
void getTabResourceInformation(TRId trId,AsyncCallback callback);
void setTabResourceInformation(TabResource tabResource, AsyncCallback callback);
void getTRCreationDate(TRId trId,AsyncCallback callback);
void setTabResource(TabResource tabResource, AsyncCallback callback);
void getTabularResources(AsyncCallback> callback);
void getTabularResourcesAndLastTables(AsyncCallback> callback);
void getLastTable(TRId trId, AsyncCallback callback);
void getTable(TRId trId, AsyncCallback callback);
void getTableMetadata(TRId trId, AsyncCallback> callback);
void getTRMetadata(TRId trId, AsyncCallback> callback);
void getColumns(AsyncCallback> callback);
void getColumns(TRId trId, AsyncCallback> callback);
void getColumnsForDimension(TRId trId, AsyncCallback> callback);
void getColumn(TRId trId, String columnName, AsyncCallback callback);
void getColumn(String columnLocalId,TRId trId, AsyncCallback callback);
void getConnection(RefColumn refColumn, AsyncCallback callback);
//Task
void startTaskResubmit(TaskResubmitSession taskResubmitSession,AsyncCallback callback);
void startTaskResume(TaskResumeSession taskResumeSession,AsyncCallback callback);
//Validations
void getValidationsTasksMetadata(TRId trId,AsyncCallback callback);
void getTableValidationsMetadata(TRId trId,AsyncCallback callback);
void getValidationColumns(TRId trId, String columnName, AsyncCallback> callback);
//RollBack
void startRollBack(RollBackSession rollBackSession,AsyncCallback callback);
void startDiscard(TRId trId,AsyncCallback callback);
//Share
void getShareInfo(TRId trId, AsyncCallback callback);
void setShare(ShareInfo shareInfo, AsyncCallback callback);
//CodelistPagingLoaded
void setCodelistsPagingLoader(AsyncCallback callback);
void getCodelistsPagingLoader(
CodelistPagingLoadConfig codelistPagingLoadConfig,
AsyncCallback callback);
//Open
void tdOpen(TDOpenSession tdOpenSession, AsyncCallback callback);
//Clone
String startCloneTabularResource(CloneTabularResourceSession cloneTabularResourceSession, AsyncCallback callback);
//SDMX
void getCodelists(AsyncCallback> callback);
void getDatasets(AsyncCallback> callback);
void getAgencies(AsyncCallback> callback);
void setSDMXRegistrySource(SDMXRegistrySource sdmxRegistrySource, AsyncCallback callback);
//Import SDMX
void startSDMXImport(SDMXImportSession sdmxImportSession,AsyncCallback callback);
//Import CSV
void setCSVSession(CSVImportSession csvImportSession, AsyncCallback callback);
void getFileFromWorkspace(CSVImportSession csvImportSession, AsyncCallback callback);
void getAvailableCharset(AsyncCallback callback);
void configureCSVParser(String encoding, HeaderPresence headerPresence, char delimiter, char comment, AsyncCallback> callback);
void checkCSV(long errorsLimit, AsyncCallback callback);
void startCSVImport(CSVImportSession csvImportSession, AsyncCallback callback);
//Export CSV
void startCSVExport(CSVExportSession csvExportSession, AsyncCallback callback);
//Export SDMX
void startSDMXExport(SDMXExportSession exportSession, AsyncCallback callback);
//Table Operation
void startChangeTableType(ChangeTableTypeSession changeTableTypeSession,AsyncCallback callback);
void startUnion(UnionSession unionSession, AsyncCallback callback);
//Rows Operation
void startEditRow(EditRowSession editRowSession,AsyncCallback callback);
void startDeleteRows(DeleteRowsSession deleteRowsSession,AsyncCallback callback);
void startDuplicates(DuplicatesSession duplicatesSession,AsyncCallback callback);
//Column Operation
void startChangeColumnType(ChangeColumnTypeSession changeColumnTypeSession,AsyncCallback callback);
void startAddColumn(AddColumnSession addColumnSession,AsyncCallback callback);
void startDeleteColumn(DeleteColumnSession deleteColumnSession,AsyncCallback callback);
void startLabelColumn(LabelColumnSession labelColumnSession,AsyncCallback callback);
/*void startSplitColumn(SplitColumnSession splitColumnSession,AsyncCallback callback);*/
/*void startSplitColumn(MergeColumnSession mergeColumnSession,AsyncCallback callback); */
/*void startGroupBy(GroupBySession groupBySession,AsyncCallback callback);*/
//BatchReplace Operation
void getOccurrencesForBatchReplace(OccurrencesForReplaceBatchColumnSession occurrencesForReplaceBatchColumnSession, AsyncCallback> callback);
void startReplaceBatchColumn(ReplaceBatchColumnSession replaceBatchColumnSession,AsyncCallback callback);
//Replace Operation
void startReplaceColumn(ReplaceColumnSession replaceColumnSession,AsyncCallback callback);
//Templates
void getTemplates(AsyncCallback> callback);
void startTemplateApply(TemplateApplySession templateDeleteSession,AsyncCallback callback);
void templateDelete(TemplateDeleteSession templateDeleteSession,AsyncCallback callback);
//Locales
void getLocales(AsyncCallback> callback);
//History
void getHistory(AsyncCallback> callback);
void getHistory(TRId trId, AsyncCallback> callback);
void getLastOperationInfo(AsyncCallback callback);
void getLastOperationInfo(TRId trId, AsyncCallback callback);
//Helper Extract Codelist
void startExtractCodelist(ExtractCodelistSession extractCodelistSession, AsyncCallback callback);
//Helper Codelist Mapping Import
void setCodelistMappingSession(CodelistMappingSession codelistMappingSession, AsyncCallback callback);
void getFileFromWorkspace(CodelistMappingSession codelistMappingSession, AsyncCallback callback);
void startCodelistMappingImport(CodelistMappingSession codelistMappingSession, AsyncCallback callback);
//Normalization
void startNormalization(NormalizationSession normalizationSession, AsyncCallback callback);
//Denormalization
void startDenormalization(DenormalizationSession denormalizationSession, AsyncCallback callback);
//Operation Monitor
void getOperationMonitor(OperationMonitorSession operationMonitorSession, AsyncCallback callback);
//File Upload Monitor
void getFileUploadMonitor(AsyncCallback callback);
}