package com.github.vbauer.jconditions.checker;
import com.github.vbauer.jconditions.annotation.AppIsInstalled;
import com.github.vbauer.jconditions.core.CheckerContext;
import com.github.vbauer.jconditions.core.ConditionChecker;
import com.github.vbauer.jconditions.util.PropUtils;
/**
* @author Vladislav Bauer
*/
public class AppIsInstalledChecker implements ConditionChecker<AppIsInstalled> {
/**
* {@inheritDoc}
*/
@Override
public boolean isSatisfied(final CheckerContext<AppIsInstalled> context) throws Exception {
final AppIsInstalled annotation = context.getAnnotation();
final String[] applications = annotation.value();
return appsInstalled(applications);
}
private boolean appsInstalled(final String... applications) throws Exception {
for (final String application : applications) {
final String app = PropUtils.injectProperties(application);
if (!isAppInstalled(app)) {
return false;
}
}
return applications.length > 0;
}
private boolean isAppInstalled(final String application) {
try {
return Runtime.getRuntime().exec(application) != null;
} catch (final Exception ex) {
return false;
}
}
}