Main.java Source code

Java tutorial

Introduction

Here is the source code for Main.java

Source

//package com.java2s;
/*
 * Copyright (C) 2012 The Android Open Source Project
 * Copyright (C) 2009-2013 University of Washington
 *
 * 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.
 */

import java.io.File;

import java.util.ArrayList;

import android.os.Environment;

public class Main {
    private static final String ODK_FOLDER_NAME = "opendatakit";

    public static String asUriFragment(String appName, File fileUnderAppName) {
        String relativePath = asRelativePath(appName, fileUnderAppName);
        String separatorString;
        if (File.separatorChar == '\\') {
            // Windows Robolectric
            separatorString = File.separator + File.separator;
        } else {
            separatorString = File.separator;
        }
        String[] segments = relativePath.split(separatorString);
        StringBuilder b = new StringBuilder();
        boolean first = true;
        for (String s : segments) {
            if (!first) {
                b.append("/"); // uris have forward slashes
            }
            first = false;
            b.append(s);
        }
        return b.toString();
    }

    /**
     * Returns the relative path beginning after the getAppFolder(appName) directory.
     * The relative path does not start or end with a '/'
     *
     * @param appName
     * @param fileUnderAppName
     * @return
     */
    public static String asRelativePath(String appName, File fileUnderAppName) {
        // convert fileUnderAppName to a relative path such that if
        // we just append it to the AppFolder, we have a full path.
        File parentDir = new File(getAppFolder(appName));

        ArrayList<String> pathElements = new ArrayList<String>();

        File f = fileUnderAppName;
        while (f != null && !f.equals(parentDir)) {
            pathElements.add(f.getName());
            f = f.getParentFile();
        }

        if (f == null) {
            throw new IllegalArgumentException("file is not located under this appName (" + appName + ")!");
        }

        StringBuilder b = new StringBuilder();
        for (int i = pathElements.size() - 1; i >= 0; --i) {
            String element = pathElements.get(i);
            b.append(element);
            if (i != 0) {
                b.append(File.separator);
            }
        }
        return b.toString();

    }

    public static String getAppFolder(String appName) {
        String path = getOdkFolder() + File.separator + appName;
        return path;
    }

    public static String getOdkFolder() {
        String path = Environment.getExternalStorageDirectory() + File.separator + ODK_FOLDER_NAME;
        return path;
    }
}