org.netbeans.modules.android.maven.DalvikPlatformForMavenProvider.java Source code

Java tutorial

Introduction

Here is the source code for org.netbeans.modules.android.maven.DalvikPlatformForMavenProvider.java

Source

/*
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.netbeans.modules.android.maven;

import com.google.common.base.Predicate;
import com.google.common.collect.Iterables;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.netbeans.api.project.Project;
import org.netbeans.modules.android.core.sdk.DalvikPlatform;
import org.netbeans.modules.android.core.sdk.DalvikPlatformManager;
import org.netbeans.modules.android.project.spi.DalvikPlatformResolver;
import org.netbeans.modules.maven.api.NbMavenProject;
import org.netbeans.spi.project.ProjectServiceProvider;

/**
 *
 * @author radim
 */
@ProjectServiceProvider(service = DalvikPlatformResolver.class, projectType = "org-netbeans-modules-maven")
public class DalvikPlatformForMavenProvider implements DalvikPlatformResolver {
    private static final Logger LOG = Logger.getLogger(DalvikPlatformForMavenProvider.class.getName());
    private static final String ANDROID_SDK_GROUP_ID = "com.google.android";
    private static final String ANDROID_SDK_ARTIFACT = "android";

    private final Project p;

    public DalvikPlatformForMavenProvider(Project p) {
        this.p = p;
    }

    @Override
    public DalvikPlatform findDalvikPlatform() {
        NbMavenProject mvnApiPrj = p.getLookup().lookup(NbMavenProject.class);
        if (mvnApiPrj == null) {
            // weird but OK
            return null;
        }
        MavenProject mavenProject = mvnApiPrj.getMavenProject();
        if (mavenProject == null) {
            LOG.log(Level.FINER, "No MavenProject for {0}", p);
            return null;
        }
        List<Dependency> deps = mavenProject.getDependencies();
        deps = deps != null ? deps : Collections.<Dependency>emptyList();
        for (Dependency d : deps) {
            LOG.log(Level.FINE, "dependency {0}", d);
        }
        Dependency androidDep = Iterables.find(deps, new Predicate<Dependency>() {

            @Override
            public boolean apply(Dependency d) {
                return ANDROID_SDK_ARTIFACT.equals(d.getArtifactId()) && ANDROID_SDK_GROUP_ID.equals(d.getGroupId())
                        && Artifact.SCOPE_PROVIDED.equals(d.getScope());
            }
        }, null);
        if (androidDep == null) {
            return null;
        }
        String version = androidDep.getVersion();
        LOG.log(Level.FINE, "{0} depends on android version {1}", new Object[] { p, version });
        if (version == null) {
            return null;
        }
        for (DalvikPlatform dp : DalvikPlatformManager.getDefault().getPlatforms()) {
            if (dp.getAndroidTarget().getVersionName().equals(version)) {
                LOG.log(Level.FINE, "{0} matches to {1}", new Object[] { p, dp });
                return dp;
            }
        }
        return null;
    }
}