1/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package vogar.android;
18
19import java.io.File;
20import vogar.Action;
21import vogar.Classpath;
22import vogar.Result;
23import vogar.tasks.Task;
24
25public final class DexTask extends Task {
26    private final AndroidSdk androidSdk;
27    private final Classpath classpath;
28    private final boolean benchmark;
29    private final File jar;
30    private final Action action;
31    private final File localDex;
32
33    public DexTask(AndroidSdk androidSdk, Classpath classpath, boolean benchmark, String name,
34            File jar, Action action, File localDex) {
35        super("dex " + name);
36        this.androidSdk = androidSdk;
37        this.classpath = classpath;
38        this.benchmark = benchmark;
39        this.jar = jar;
40        this.action = action;
41        this.localDex = localDex;
42    }
43
44    @Override protected Result execute() throws Exception {
45        // make the local dex (inside a jar)
46        Classpath cp = Classpath.of(jar);
47        if (benchmark && action != null) {
48            cp.addAll(classpath);
49        }
50        androidSdk.dex(localDex, cp);
51        return Result.SUCCESS;
52    }
53}
54