package com.mobilesorcery.sdk.molint.rules;
import java.text.MessageFormat;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.cdt.core.model.ICModelMarker;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import com.mobilesorcery.sdk.core.IBuildVariant;
import com.mobilesorcery.sdk.core.MoSyncProject;
import com.mobilesorcery.sdk.core.apisupport.nfc.NFCSupport;
import com.mobilesorcery.sdk.core.security.ICommonPermissions;
import com.mobilesorcery.sdk.molint.AbstractMolintRule;
public class NFCRule extends AbstractMolintRule {
private static final String ID = "nfc";
public NFCRule() {
super(ID, "NFC");
}
@Override
public List<IMarker> analyze(IProgressMonitor monitor,
MoSyncProject project, IBuildVariant variant) throws CoreException {
// TODO: API Analysis
ArrayList<IMarker> result = new ArrayList<IMarker>();
if (project.getPermissions().isPermissionRequested(ICommonPermissions.NFC)) {
NFCSupport nfcSupport = NFCSupport.create(project);
if (!nfcSupport.getNFCDescription().exists()) {
IMarker marker = project.getWrappedProject().createMarker(ICModelMarker.C_MODEL_PROBLEM_MARKER);
marker.setAttribute(IMarker.MESSAGE,
MessageFormat.format(
"NFC permission set; requires an NFC enablement file at {0}.",
nfcSupport.getNFCDescription().getAbsolutePath()));
marker.setAttribute(IMarker.SEVERITY, getSeverity(IMarker.SEVERITY_ERROR));
result.add(marker);
}
}
return result;
}
}