/**
* Copyright (C) 2012-2013 eBusiness Information (www.ebusinessinformation.fr)
*
* 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 com.athomas.androidkickstartr.util;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class FileHelper {
private static final String TARGET = "generated";
private String applicationName;
private String packageName;
private boolean maven;
private File resourcesTempDir;
public FileHelper(String applicationName, String packageName, boolean maven) {
this.applicationName = applicationName;
this.packageName = packageName;
this.maven = maven;
}
public File getKickstartrResourcesDir() throws IOException {
if (resourcesTempDir == null || !resourcesTempDir.exists()) {
resourcesTempDir = File.createTempFile("AndroidKickstartR-Resources", null);
resourcesTempDir.delete();
resourcesTempDir.mkdir();
}
return resourcesTempDir;
}
public String getTargetSourcePath() {
String srcPath = maven ? "/src/main/java" : "/src";
return getProjectPath() + srcPath;
}
public File getTargetSourceDir() {
File dir = new File(getTargetSourcePath());
dir.mkdirs();
return dir;
}
public File getTargetTestDir() {
File dir = new File(getProjectPath() + "/src/test/java");
dir.mkdirs();
return dir;
}
private String getFinalPath() {
return TARGET + "/" + applicationName + "-AndroidKickstartr";
}
private String getProjectPath() {
return getFinalPath() + "/" + applicationName;
}
public File getTemplatesDir() throws IOException {
return getResource("templates/");
}
private File getDir(String path) {
File dir = new File(path);
dir.mkdirs();
return dir;
}
public File getResDir() throws IOException {
return getResource("res/");
}
public File getTargetAndroidResDir() throws IOException {
return getDir(getProjectPath() + "/res");
}
public File getTargetProjectDir() {
return getDir(getProjectPath());
}
public File getProjectDir() {
return getDir(getProjectPath());
}
public File getFinalDir() {
return getDir(getFinalPath());
}
public File getTargetDir() {
return getDir(TARGET);
}
public File getTargetLibsDir() throws IOException {
return getDir(getProjectPath() + "/libs");
}
public File getTargetExtCompileDir() throws IOException {
return getDir(getProjectPath() + "/compile-libs");
}
public File getTargetAndroidManifestFile() throws IOException {
return createFile(getProjectPath() + "/AndroidManifest.xml");
}
private File createFile(String path) throws IOException {
File file = new File(path);
File parent = file.getParentFile();
if (!parent.exists() && !parent.mkdirs()) {
throw new IllegalStateException("Couldn't create dir: " + parent);
}
if (!file.exists()) {
file.createNewFile();
}
return file;
}
public File getTargetPomFile() throws IOException {
return createFile(getProjectPath() + "/pom.xml");
}
public File getTargetFactoryPathFile() throws IOException {
return createFile(getProjectPath() + "/.factorypath");
}
public File getTargetStylesFile() throws IOException {
return createFile(getProjectPath() + "/res/values/styles.xml");
}
public File getTargetActivityMainFile() throws IOException {
return createFile(getProjectPath() + "/res/layout/activity_main.xml");
}
public File getTargetProjectFile() throws IOException {
return createFile(getProjectPath() + "/.project");
}
public File getTargetProguardFile() throws IOException {
return createFile(getProjectPath() + "/proguard.cfg");
}
public File getTargetClasspathFile() throws IOException {
return createFile(getProjectPath() + "/.classpath");
}
public File getTargetStringsFile() throws IOException {
return createFile(getProjectPath() + "/res/values/strings.xml");
}
public File getTargetEclipseJdtAptCorePrefsFile() throws IOException {
return createFile(getProjectPath() + "/.settings/org.eclipse.jdt.apt.core.prefs");
}
public File getTargetEclipseJdtCorePrefsFile() throws IOException {
return createFile(getProjectPath() + "/.settings/org.eclipse.jdt.core.prefs");
}
public File getTargetProjectPropertiesFile() throws IOException {
return createFile(getProjectPath() + "/project.properties");
}
public File getTargetReadmeFile() throws IOException {
return createFile(getFinalPath() + "/README.md");
}
public File getTargetRoboSherlockActivityFile() throws IOException {
return createFile(getTargetSourcePath() + "/" + packageName.replace(".", "/") + "/robosherlock/RoboSherlockActivity.java");
}
public File getTargetRoboSherlockFragmentFile() throws IOException {
return createFile(getTargetSourcePath() + "/" + packageName.replace(".", "/") + "/robosherlock/RoboSherlockFragment.java");
}
public File getTargetRoboSherlockFragmentActivityFile() throws IOException {
return createFile(getTargetSourcePath() + "/" + packageName.replace(".", "/") + "/robosherlock/RoboSherlockFragmentActivity.java");
}
public File getEclipseJdtAptCorePrefs() throws IOException {
return getResource("org.eclipse.jdt.apt.core.prefs");
}
public File getResource(String filename) throws IOException {
return getFile(getKickstartrResourcesDir(), filename);
}
private File getFile(File parent, String path) throws IOException {
File file = new File(parent, path);
if (!file.exists()) {
throw new FileNotFoundException(path + " doesn't exist");
}
return file;
}
public File getEclipseJdtCorePrefs() throws IOException {
return getResource("org.eclipse.jdt.core.prefs");
}
public File getProjectPropertiesFile() throws IOException {
return getResource("project.properties");
}
public File getLibraryFile(String filename) throws IOException {
return getResource("libs/" + filename);
}
}