package fr.adrienbrault.idea.symfony2plugin.webDeployment.container;
import com.intellij.openapi.project.Project;
import fr.adrienbrault.idea.symfony2plugin.dic.webDeployment.ServiceContainerRemoteFileStorage;
import fr.adrienbrault.idea.symfony2plugin.extension.CompiledServiceBuilderArguments;
import fr.adrienbrault.idea.symfony2plugin.extension.CompiledServiceBuilderFactory;
import fr.adrienbrault.idea.symfony2plugin.webDeployment.utils.RemoteWebServerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* @author Daniel Espendiller <daniel@espendiller.net>
*/
public class RemoteCompiledServiceContainerLoader implements CompiledServiceBuilderFactory {
@NotNull
public Builder create() {
return new Builder() {
private long remoteBuildTime = -1;
@Override
public void build(@NotNull CompiledServiceBuilderArguments args) {
ServiceContainerRemoteFileStorage extension = getExtension(args.getProject());
if (extension == null) {
return;
}
this.remoteBuildTime = extension.getState().getBuildTime();
args.addStreams(extension.getState().getInputStreams());
}
@Override
public boolean isModified(@NotNull Project project) {
ServiceContainerRemoteFileStorage extension = getExtension(project);
long remoteBuildTime = -1;
if(extension != null) {
remoteBuildTime = extension.getState().getBuildTime();
}
return remoteBuildTime != this.remoteBuildTime;
}
};
}
@Nullable
private static ServiceContainerRemoteFileStorage getExtension(@NotNull Project project) {
return RemoteWebServerUtil.getExtensionInstance(
project,
ServiceContainerRemoteFileStorage.class
);
}
}