package com.mobilesorcery.sdk.core; import java.util.List; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IAdaptable; import com.mobilesorcery.sdk.core.build.BuildSequence; import com.mobilesorcery.sdk.core.build.CopyBuildResultBuildStep; public class IsReleasePackageTester extends MoSyncNatureTester { public IsReleasePackageTester() { } @Override public boolean test(Object receiver, String property, Object[] args, Object expectedValue) { return isReleasePackageFolder(receiver); } public static boolean isReleasePackageFolder(Object receiver) { if (receiver instanceof IAdaptable) { receiver = ((IAdaptable) receiver).getAdapter(IResource.class); } // TODO: Get from project + createWorkingCopy method! Can't parse stuff // every time. MoSyncProject project = null; if (receiver instanceof IResource) { project = MoSyncProject.create(((IResource) receiver).getProject()); } if (receiver instanceof IFolder) { IFolder folder = (IFolder) receiver; // Only top-level if (folder.getProjectRelativePath().segmentCount() == 1) { String folderName = getReleasePackageFolder(project); if (folderName != null && Util.equals(folderName.toLowerCase(), folder.getName() .toLowerCase())) { return true; } } } return false; } public static String getReleasePackageFolder(MoSyncProject project) { if (project != null) { BuildSequence seq = BuildSequence.getCached(project); List<CopyBuildResultBuildStep.Factory> factories = seq .getBuildStepFactories(CopyBuildResultBuildStep.Factory.class); for (CopyBuildResultBuildStep.Factory factory : factories) { String folderName = factory.getFolderName(); return folderName; } } return null; } }