package de.plushnikov.intellij.plugin.agent.transformer; import de.plushnikov.intellij.plugin.agent.IdeaPatcherOptionsHolder; import de.plushnikov.intellij.plugin.agent.support.BuildNumber; import de.plushnikov.intellij.plugin.agent.support.SupportedBuild; import de.plushnikov.intellij.util.StringUtils; /** * @author Alexej Kubarev */ abstract class AbstractBuildDependentTransformer implements IdeaPatcherTransformer { protected boolean isSupportedBuild() { SupportedBuild supportedBuild = this.getClass().getAnnotation(SupportedBuild.class); if (null != supportedBuild) { String ideaBuildString = IdeaPatcherOptionsHolder.getInstance().getOption("ideaBuild"); BuildNumber currentBuild = BuildNumber.fromString(ideaBuildString); String maxString = supportedBuild.max(); String minString = supportedBuild.min(); if (!StringUtils.isEmpty(minString)) { BuildNumber minBuild = BuildNumber.fromString(minString); // minBuild > currentBuild if (minBuild.compareTo(currentBuild) > 0) { return false; } } if (!StringUtils.isEmpty(maxString)) { BuildNumber maxBuild = BuildNumber.fromString(maxString); // maxBuild < currentBuild if (maxBuild.compareTo(currentBuild) < 0) { return false; } } } return true; } @Override public boolean supported() { return isSupportedBuild(); } }