integrated with SyncEngine.parseInfo

This commit is contained in:
Francesco Mangiacrapa 2021-05-14 12:09:59 +02:00
parent e4614f70ef
commit 60a2e10117
3 changed files with 57 additions and 28 deletions

View File

@ -35,14 +35,4 @@ public interface DoCheckSyncItem<T> {
* @throws Exception the exception * @throws Exception the exception
*/ */
T getConfiguration(String itemId) throws WorkspaceInteractionException, WorkspaceNotSynchedException, Exception; T getConfiguration(String itemId) throws WorkspaceInteractionException, WorkspaceNotSynchedException, Exception;
/**
* Checks if is item synched.
*
* @param itemId the item id
* @return true, if is item synched
* @throws Exception the exception
*/
boolean isItemSynched(String itemId) throws Exception;
} }

View File

@ -46,7 +46,8 @@ public class ThreddsConverter {
mySync.setFolderId(t.getFolderId()); mySync.setFolderId(t.getFolderId());
mySync.setFolderPath(t.getFolderPath()); mySync.setFolderPath(t.getFolderPath());
mySync.setLocked(t.getIsLocked()); mySync.setLocked(t.getIsLocked());
mySync.setElementInfo(toThElementInfo.apply(t.getInfo())); Sync_Status theSyncStatus = toSyncStatus.apply(t.getStatus());
mySync.setElementInfo(new ThSyncElementInfo(theSyncStatus));
ThProcessDescriptor localProcessDescriptor = toThProcessDescriptor.apply(t.getLocalProcessDescriptor()); ThProcessDescriptor localProcessDescriptor = toThProcessDescriptor.apply(t.getLocalProcessDescriptor());
mySync.setLocalProcessDescriptor(localProcessDescriptor); mySync.setLocalProcessDescriptor(localProcessDescriptor);
ThSynchFolderConfiguration configuration = toThSynchFolderConfiguration.apply(t.getConfiguration()); ThSynchFolderConfiguration configuration = toThSynchFolderConfiguration.apply(t.getConfiguration());
@ -68,7 +69,8 @@ public class ThreddsConverter {
SynchFolderConfiguration configuration = toSynchFolderConfiguration.apply(t.getConfiguration()); SynchFolderConfiguration configuration = toSynchFolderConfiguration.apply(t.getConfiguration());
SynchronizedElementInfo sei = toSynchronizedElementInfo.apply(t.getElementInfo()); SynchronizedElementInfo sei = toSynchronizedElementInfo.apply(t.getElementInfo());
return new SyncFolderDescriptor(t.getFolderId(), t.getFolderPath(), configuration, sei); return new SyncFolderDescriptor(sei.getStatus(), t.getFolderId(), t.getFolderPath(), configuration,
t.isLocked());
} }
}; };
@ -189,12 +191,11 @@ public class ThreddsConverter {
break; break;
} }
} }
// mySync.setStatus(t.getStatus());
return mySync; return mySync;
} }
}; };
public static Function<SynchronizedElementInfo, ThSyncElementInfo> toThElementInfo = new Function<SynchronizedElementInfo, ThSyncElementInfo>() { public static Function<SynchronizedElementInfo, ThSyncElementInfo> toThSyncElementInfo = new Function<SynchronizedElementInfo, ThSyncElementInfo>() {
public ThSyncElementInfo apply(SynchronizedElementInfo sei) { public ThSyncElementInfo apply(SynchronizedElementInfo sei) {
@ -205,23 +206,35 @@ public class ThreddsConverter {
} }
ThSyncElementInfo toReturn = new ThSyncElementInfo(); ThSyncElementInfo toReturn = new ThSyncElementInfo();
SynchronizationStatus status = sei.getStatus(); Sync_Status theSyncStatus = toSyncStatus.apply(sei.getStatus());
toReturn.setSyncStatus(theSyncStatus);
return toReturn;
}
};
if (status != null) { public static Function<SynchronizationStatus, Sync_Status> toSyncStatus = new Function<SynchronizationStatus, Sync_Status>() {
switch (status) {
public Sync_Status apply(SynchronizationStatus synchronizationStatus) {
if (synchronizationStatus == null) {
logger.info("Input " + SynchronizationStatus.class.getSimpleName() + " is null, returning null "
+ Sync_Status.class.getSimpleName());
return null;
}
if (synchronizationStatus != null) {
switch (synchronizationStatus) {
case UP_TO_DATE: case UP_TO_DATE:
toReturn.setSyncStatus(Sync_Status.UP_TO_DATE); return Sync_Status.UP_TO_DATE;
break;
case OUTDATED_WS: case OUTDATED_WS:
toReturn.setSyncStatus(Sync_Status.OUTDATED_WS); return Sync_Status.OUTDATED_WS;
break;
case OUTDATED_REMOTE: case OUTDATED_REMOTE:
toReturn.setSyncStatus(Sync_Status.OUTDATED_REMOTE); return Sync_Status.OUTDATED_REMOTE;
default: default:
break; break;
} }
} }
return toReturn; return null;
} }
}; };

View File

@ -13,6 +13,7 @@ import org.gcube.portal.wssynclibrary.shared.thredds.Status;
import org.gcube.portal.wssynclibrary.shared.thredds.ThCatalogueBean; import org.gcube.portal.wssynclibrary.shared.thredds.ThCatalogueBean;
import org.gcube.portal.wssynclibrary.shared.thredds.ThProcessDescriptor; import org.gcube.portal.wssynclibrary.shared.thredds.ThProcessDescriptor;
import org.gcube.portal.wssynclibrary.shared.thredds.ThProcessStatus; import org.gcube.portal.wssynclibrary.shared.thredds.ThProcessStatus;
import org.gcube.portal.wssynclibrary.shared.thredds.ThSyncElementInfo;
import org.gcube.portal.wssynclibrary.shared.thredds.ThSyncFolderDescriptor; import org.gcube.portal.wssynclibrary.shared.thredds.ThSyncFolderDescriptor;
import org.gcube.portal.wssynclibrary.shared.thredds.ThSyncStatus; import org.gcube.portal.wssynclibrary.shared.thredds.ThSyncStatus;
import org.gcube.portal.wssynclibrary.shared.thredds.ThSynchFolderConfiguration; import org.gcube.portal.wssynclibrary.shared.thredds.ThSynchFolderConfiguration;
@ -24,9 +25,11 @@ import org.gcube.usecases.ws.thredds.faults.ProcessNotFoundException;
import org.gcube.usecases.ws.thredds.faults.WorkspaceInteractionException; import org.gcube.usecases.ws.thredds.faults.WorkspaceInteractionException;
import org.gcube.usecases.ws.thredds.faults.WorkspaceLockedException; import org.gcube.usecases.ws.thredds.faults.WorkspaceLockedException;
import org.gcube.usecases.ws.thredds.faults.WorkspaceNotSynchedException; import org.gcube.usecases.ws.thredds.faults.WorkspaceNotSynchedException;
import org.gcube.usecases.ws.thredds.model.ContainerType;
import org.gcube.usecases.ws.thredds.model.SyncFolderDescriptor; import org.gcube.usecases.ws.thredds.model.SyncFolderDescriptor;
import org.gcube.usecases.ws.thredds.model.SyncOperationCallBack; import org.gcube.usecases.ws.thredds.model.SyncOperationCallBack;
import org.gcube.usecases.ws.thredds.model.SynchFolderConfiguration; import org.gcube.usecases.ws.thredds.model.SynchFolderConfiguration;
import org.gcube.usecases.ws.thredds.model.SynchronizedElementInfo;
import org.gcube.usecases.ws.thredds.model.gui.CatalogBean; import org.gcube.usecases.ws.thredds.model.gui.CatalogBean;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -353,6 +356,8 @@ public class WorkspaceThreddsSynchronize
* @throws WorkspaceInteractionException the workspace interaction exception * @throws WorkspaceInteractionException the workspace interaction exception
* @throws WorkspaceNotSynchedException the workspace not synched exception * @throws WorkspaceNotSynchedException the workspace not synched exception
* @throws Exception the exception * @throws Exception the exception
*
* NB. it is time consuming due to it calls the SHUB
*/ */
@Override @Override
public ThSyncFolderDescriptor getConfiguration(String itemId) public ThSyncFolderDescriptor getConfiguration(String itemId)
@ -369,19 +374,40 @@ public class WorkspaceThreddsSynchronize
} }
/**
* Gets the element info.
*
* @param itemProperties the item properties read from SHUB by accessing to Metadata.Map() of a item
* @param itemType the item type
* @return the element info
* @throws WorkspaceNotSynchedException the workspace not synched exception
*/
public ThSyncElementInfo getElementInfo(Map<String, Object> itemProperties, ContainerType itemType) throws WorkspaceNotSynchedException {
if (itemProperties == null || itemProperties.isEmpty())
return null;
SynchronizedElementInfo theSEI = SyncEngine.parseInfo(itemProperties, itemType);
return ThreddsConverter.toThSyncElementInfo.apply(theSEI);
}
/** /**
* Checks if is item synched. * Checks if is item synched.
* *
* @param itemId the item id * @param itemId the item id
* @param itemProperties the item properties
* @param itemType the item type
* @return true, if is item synched * @return true, if is item synched
* @throws Exception the exception * @throws Exception the exception
*/ */
@Override public boolean isItemSynched(String itemId, Map<String, Object> itemProperties, ContainerType itemType) throws Exception {
public boolean isItemSynched(String itemId) throws Exception {
ThSyncFolderDescriptor config = null; ThSyncElementInfo sinInfo = null;
try { try {
config = getConfiguration(itemId); sinInfo = getElementInfo(itemProperties,itemType);
} catch (WorkspaceNotSynchedException e) { } catch (WorkspaceNotSynchedException e) {
logger.debug("WorkspaceNotSynchedException catched, the item id: " + itemId + " is not synched"); logger.debug("WorkspaceNotSynchedException catched, the item id: " + itemId + " is not synched");
} catch (Exception e) { } catch (Exception e) {
@ -389,7 +415,7 @@ public class WorkspaceThreddsSynchronize
+ ", returning null (means not synched)"); + ", returning null (means not synched)");
} }
if (config != null) if (sinInfo != null)
return true; return true;
return false; return false;