package com.constellio.app.modules.es.connectors.smb.jobs;
import com.constellio.app.modules.es.connectors.smb.ConnectorSmb;
import com.constellio.app.modules.es.connectors.smb.jobmanagement.SmbConnectorJob;
import com.constellio.app.modules.es.connectors.smb.jobmanagement.SmbJobFactoryImpl.SmbJobCategory;
import com.constellio.app.modules.es.connectors.smb.jobmanagement.SmbJobFactoryImpl.SmbJobType;
import com.constellio.app.modules.es.connectors.spi.Connector;
import com.constellio.app.modules.es.connectors.spi.ConnectorJob;
import java.util.List;
public class SmbDispatchJob extends SmbConnectorJob {
private static final String jobName = SmbDispatchJob.class.getSimpleName();
private final JobParams jobParams;
public SmbDispatchJob(JobParams jobParams) {
super(jobParams.getConnector(), jobName);
this.jobParams = jobParams;
}
@Override
public void execute(Connector connector) {
ConnectorSmb connectorSmb = (ConnectorSmb) connector;
String url = jobParams.getUrl();
SmbConnectorJob smbRetrievalJob = jobParams.getJobFactory().get(SmbJobCategory.RETRIEVAL, url, jobParams.getParentUrl());
if (!(smbRetrievalJob instanceof SmbNullJob)) {
connectorSmb.queueJob(smbRetrievalJob);
if (!(smbRetrievalJob instanceof SmbDeleteJob)) {
if (jobParams.getSmbUtils().isFolder(url)) {
List<String> childrenUrls = jobParams.getSmbShareService().getChildrenUrlsFor(url);
for (String childUrl : childrenUrls) {
if (jobParams.getSmbUtils().isFolder(childUrl)) {
SmbConnectorJob smbChildFolderRetrievalJob = jobParams.getJobFactory().get(SmbJobCategory.DISPATCH, childUrl, url);
if (!(smbRetrievalJob instanceof SmbNullJob)) {
connectorSmb.queueJob(smbChildFolderRetrievalJob);
}
} else {
SmbConnectorJob smbChildDocumentRetrievalJob = jobParams.getJobFactory().get(SmbJobCategory.RETRIEVAL, childUrl, url);
if (!(smbRetrievalJob instanceof SmbNullJob)) {
connectorSmb.queueJob(smbChildDocumentRetrievalJob);
}
}
}
}
}
}
}
@Override
public String toString() {
return jobName + '@' + Integer.toHexString(hashCode()) + " - " + jobParams.getUrl();
}
@Override
public String getUrl() {
return jobParams.getUrl();
}
@Override
public SmbJobType getType() {
return SmbJobType.DISPATCH_JOB;
}
}