package com.ensoftcorp.open.android.essentials.handlers; import java.util.HashMap; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.commands.ExecutionEvent; import org.eclipse.core.commands.ExecutionException; import org.eclipse.swt.widgets.Display; import com.ensoftcorp.atlas.core.db.graph.GraphElement; import com.ensoftcorp.atlas.core.db.set.AtlasHashSet; import com.ensoftcorp.open.android.essentials.log.Log; import com.ensoftcorp.open.android.essentials.permissions.Permission; import com.ensoftcorp.open.android.essentials.permissions.mappings.PermissionMapping; import com.ensoftcorp.open.android.essentials.preferences.AndroidEssentialsPreferences; import com.ensoftcorp.open.commons.utilities.DisplayUtils; /** * A menu selection handler for running permission mapping logic * * @author Ben Holland */ public class ApplyPermissionMappingsHandler extends AbstractHandler { public ApplyPermissionMappingsHandler() {} /** * Applies the permission mappings */ public Object execute(ExecutionEvent event) throws ExecutionException { Display.getDefault().asyncExec(new Runnable(){ @Override public void run() { String prefix = ""; String appliedVersions = ""; for(Integer apiVersion : PermissionMapping.getAvailableMappings()){ if(AndroidEssentialsPreferences.isMappingEnabled(apiVersion)){ HashMap<Permission, AtlasHashSet<GraphElement>> result = PermissionMapping.applyTags(apiVersion); long totalNodesTagged = 0; for(AtlasHashSet<GraphElement> nodes : result.values()){ totalNodesTagged += nodes.size(); } Log.info("Applied " + totalNodesTagged + " tags for Android API version " + apiVersion); appliedVersions += (prefix + apiVersion); prefix = ", "; } } DisplayUtils.showMessage("Applied permission tags for Android APIs: [" + appliedVersions + "]."); } }); return null; } }