2018-03-02 17:03:57 +01:00
|
|
|
package org.gcube.portlets.widgets.wsthreddssync;
|
|
|
|
|
|
|
|
import org.gcube.usecases.ws.thredds.SyncEngine;
|
|
|
|
import org.gcube.usecases.ws.thredds.engine.impl.ProcessDescriptor;
|
|
|
|
import org.gcube.usecases.ws.thredds.engine.impl.ProcessStatus;
|
|
|
|
import org.gcube.usecases.ws.thredds.faults.WorkspaceLockedException;
|
|
|
|
import org.gcube.usecases.ws.thredds.faults.WorkspaceNotSynchedException;
|
|
|
|
import org.gcube.usecases.ws.thredds.model.SyncOperationCallBack;
|
|
|
|
import org.gcube.usecases.ws.thredds.model.SynchFolderConfiguration;
|
|
|
|
|
|
|
|
|
|
|
|
// TODO: Auto-generated Javadoc
|
|
|
|
/**
|
|
|
|
* The Class TestWsThreddsEngine.
|
|
|
|
*
|
|
|
|
* @author Francesco Mangiacrapa francesco.mangiacrapa@isti.cnr.it
|
|
|
|
* Feb 7, 2018
|
|
|
|
*/
|
|
|
|
public class TestWsThreddsEngine {
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
public static String DEFAULT_SCOPE = "/gcube/devsec"; //DEV
|
|
|
|
// public static String DEFAULT_SCOPE = "/d4science.research-infrastructures.eu/gCubeApps";
|
|
|
|
public static String TEST_USER = "francesco.mangiacrapa";
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
public static String TEST_FOLDER_ID = "";
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2019-08-02 15:04:28 +02:00
|
|
|
public static void main(String[] args) throws Exception {
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
// GET ENGINE : SINGLETON INSTANCE
|
|
|
|
SyncEngine engine=SyncEngine.get();
|
|
|
|
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
// FOLDER CONFIGURATION BEAN
|
|
|
|
//SynchFolderConfiguration config=TestCommons.getSynchConfig();
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
String filter = "";
|
|
|
|
String remotePersistence = "";
|
|
|
|
String remotePath = "";
|
|
|
|
String targetToken = "";
|
2019-08-02 15:04:28 +02:00
|
|
|
SynchFolderConfiguration config = new SynchFolderConfiguration(remotePath, filter, targetToken, remotePersistence, TEST_FOLDER_ID);
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
try {
|
|
|
|
//try to clean it up, first..
|
2018-03-28 14:55:45 +02:00
|
|
|
System.out.println("Cleaning it up..");
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.unsetSynchronizedFolder(TEST_FOLDER_ID, false);
|
2018-03-02 17:03:57 +01:00
|
|
|
}catch(WorkspaceNotSynchedException e) {
|
|
|
|
// it was already cleared
|
|
|
|
}catch(WorkspaceLockedException e) {
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.forceUnlock(TEST_FOLDER_ID);
|
|
|
|
engine.unsetSynchronizedFolder(TEST_FOLDER_ID, false);
|
2018-03-02 17:03:57 +01:00
|
|
|
}
|
2018-03-28 14:55:45 +02:00
|
|
|
|
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
try {
|
2018-03-28 14:55:45 +02:00
|
|
|
// WHEN OPENING A FOLDER, INVOKE CHECK TO UPDATE SYNCH STATUS
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.check(TEST_FOLDER_ID, false);
|
2018-03-02 17:03:57 +01:00
|
|
|
}catch(WorkspaceNotSynchedException e) {
|
|
|
|
System.out.println("Folder not synched, configurin it..");
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.setSynchronizedFolder(config, TEST_FOLDER_ID);
|
2018-03-02 17:03:57 +01:00
|
|
|
}catch(WorkspaceLockedException e) {
|
|
|
|
System.out.println("Workspace locked, going to force unlock.."); // MAINLY FOR TEST PURPOSES, OR WHEN SOMETHIGN GOES WRONG.. USE CAUTIOUSLY
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.forceUnlock(TEST_FOLDER_ID);
|
2018-03-02 17:03:57 +01:00
|
|
|
}
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
// INVOKE SYNCHRONIZATION ON FOLDER
|
2019-08-02 15:04:28 +02:00
|
|
|
ProcessDescriptor descriptor=engine.doSync(TEST_FOLDER_ID);
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
System.out.println("Obtained descriptor : "+descriptor);
|
2018-03-28 14:55:45 +02:00
|
|
|
|
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
SyncOperationCallBack syncCall = new SyncOperationCallBack() {
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
@Override
|
|
|
|
public void onStep(ProcessStatus status, ProcessDescriptor descriptor) {
|
|
|
|
System.out.println("ON STEP : "+status+" "+descriptor);
|
|
|
|
System.out.println("LOG : \n"+ status.getLogBuilder().toString());
|
|
|
|
if(status.getStatus().equals(ProcessStatus.Status.COMPLETED)) {
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
//COMPLETED FARE REMOVE DALLA MAPPA
|
|
|
|
}
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
}
|
|
|
|
};
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
// REGISTER CALLBACK TO MONITOR PROGRESS
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.registerCallBack(TEST_FOLDER_ID, syncCall);
|
2018-03-28 14:55:45 +02:00
|
|
|
|
|
|
|
|
2019-08-02 15:04:28 +02:00
|
|
|
engine.check(TEST_FOLDER_ID, true);
|
2018-03-28 14:55:45 +02:00
|
|
|
|
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
// INVOKE WHEN PORTAL SHUTS DOWN TO FREE RESOURCES AND STOP SYNC PROCESSES
|
|
|
|
engine.shutDown();
|
2018-03-28 14:55:45 +02:00
|
|
|
|
2018-03-02 17:03:57 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|