package blade.migrate.liferay70; import blade.migrate.api.Problem; import blade.migrate.api.ProjectMigrator; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.Path; import org.osgi.framework.Version; //@Component public class SDKProjectMigrator implements ProjectMigrator { @Override public List<Problem> analyze(File projectDir) { final List<Problem> retval = new ArrayList<>(); if (isSDKProjectDir(projectDir) && (getSDKVersion(getSDKDir(projectDir)).compareTo(new Version("6.2")) >= 0) && (getSDKVersion(getSDKDir(projectDir)).compareTo(new Version("7")) < 0)) { retval.add(new Problem( "Project not located in to 7.0 plugins SDK", "In order to migrate this project to 7.0, it needs to be copied to a 7.0 plugins SDK under the appropriate directory.", "project", "", projectDir, -1, -1, -1, null, null)); } return retval; } private Version getSDKVersion(File sdkDir) { try (InputStream in = new FileInputStream(new File(sdkDir, "build.properties"))) { final Properties props = new Properties(); props.load(in); return new Version((String) props.get("lp.version")); } catch( Exception e ) { } return new Version("0"); } private boolean isSDKProjectDir(File projectDir) { final File sdkDir = getSDKDir(projectDir); final File buildProperties = new File(sdkDir, "build.properties"); final File portletsBuildXml = new File(sdkDir, "portlets/build.xml"); return sdkDir.exists() && buildProperties.exists() && portletsBuildXml.exists(); } private File getSDKDir(File projectDir) { final IPath projectPath = new Path(projectDir.getAbsolutePath()); final IPath sdkLocation = projectPath.removeLastSegments(2); final File sdkDir = sdkLocation.toFile(); return sdkDir; } }