package fr.techad.sonar.gerrit.factory;
import org.sonar.api.batch.InstantiationStrategy;
import org.sonar.api.batch.ScannerSide;
import org.sonar.api.utils.log.Logger;
import org.sonar.api.utils.log.Loggers;
import fr.techad.sonar.gerrit.GerritConnector;
import fr.techad.sonar.gerrit.GerritFacade;
import fr.techad.sonar.gerrit.network.rest.GerritRestConnector;
import fr.techad.sonar.gerrit.network.rest.GerritRestFacade;
import fr.techad.sonar.gerrit.network.ssh.GerritSshConnector;
import fr.techad.sonar.gerrit.network.ssh.GerritSshFacade;
@ScannerSide
@InstantiationStrategy(InstantiationStrategy.PER_BATCH)
public class GerritFacadeFactory {
private static final Logger LOG = Loggers.get(GerritFacadeFactory.class);
private GerritFacade gerritFacade;
public GerritFacadeFactory(GerritConnectorFactory gerritConnectorFactory) {
GerritConnector gerritConnector = gerritConnectorFactory.getConnector();
if (gerritConnector instanceof GerritRestConnector) {
LOG.debug("[GERRIT PLUGIN] Using REST connector.");
gerritFacade = new GerritRestFacade(gerritConnector);
} else if (gerritConnector instanceof GerritSshConnector) {
LOG.debug("[GERRIT PLUGIN] Using SSH facade.");
gerritFacade = new GerritSshFacade(gerritConnector);
} else {
LOG.error("[GERRIT PLUGIN] Unknown type of connector. Cannot assign facade.");
}
}
public GerritFacade getFacade() {
return gerritFacade;
}
}