/** * Copyright (c) 2009 Farata Systems http://www.faratasystems.com * * Licensed under The MIT License * Re-distributions of files must retain the above copyright notice. * * @license http://www.opensource.org/licenses/mit-license.php The MIT License * */ package com.farata.cleardatabuilder.extjs.migration; import java.io.File; import java.io.FilenameFilter; import java.io.InputStream; import java.lang.reflect.Field; import java.lang.reflect.Modifier; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Properties; import org.eclipse.core.runtime.IPath; import org.osgi.framework.Bundle; import org.osgi.framework.Constants; import org.osgi.framework.Version; import com.farata.cleardatabuilder.extjs.Activator; import com.farata.cleardatabuilder.extjs.util.Commons; public final class Resources { private Resources() { } public static File clearProjectTemplateFolder; public static File clearExampleTemplateFolder; public static File databaseDriversFolder; public static File jotmWar; public static File daoflexWar; public static File serverArtifactsFolder; public static File clearBuildFilesFolder; public static File blazeDsFolder; public static File clearTemplateFolder; public static File clearJavaDTOTemplateFolder; public static File getEntry(final IPath relativePath) throws Exception { return Commons.getBundleEntry(Activator.getDefault().getBundle(), relativePath.toString()); } public static Version getPluginVersion() { return Version.parseVersion(Activator.getDefault().getBundle() .getHeaders().get(Constants.BUNDLE_VERSION).toString()); } public static File getDaoflexBuildFile() { return new File(clearBuildFilesFolder, "daoflex-build.xml"); } public static File getServerDataSourceContextTemplate( final String serverType) { return new File(new File(clearBuildFilesFolder, serverType), "jdbc.xsl"); } public static File getServerArtifactsFolder(final String serverType) { return new File(serverArtifactsFolder, serverType); } public static List<File> getDatabaseJdbcJars(final String driverId) { final File[] files = new File(databaseDriversFolder, driverId) .listFiles(new FilenameFilter() { public boolean accept(final File dir, final String name) { return name.endsWith(".jar"); } }); if (files != null) { return Arrays.asList(files); } else { return Collections.emptyList(); } } public static List<File> getDatabaseDriverFiles() throws Exception { return Commons.getBundleEntries(Activator.getDefault().getBundle(), "resources/DatabaseDrivers", "*.properties", true); } public static File getDatabaseDriverFile(final String driverId) throws Exception { final List<File> foundEntries = Commons.getBundleEntries(Activator .getDefault().getBundle(), "resources/DatabaseDrivers", driverId + ".properties", true); return foundEntries.get(0); } static { try { initializeResources(Activator .getDefault().getBundle(), "resources.properties", Resources.class); } catch (Exception e) { e.printStackTrace(); } } public static void initializeResources(final Bundle bundle, final String resourcesProperties, final Class<?> resourcesClass) throws Exception { final Field[] fields = resourcesClass.getDeclaredFields(); final InputStream propertiesStream = resourcesClass .getResourceAsStream(resourcesProperties); final Properties properties = new Properties(); properties.load(propertiesStream); String resourcePath = null; Field field = null; for (int i = 0; i < fields.length; i++) { field = fields[i]; if (!Modifier.isStatic(field.getModifiers())) { continue; } if (!field.isAccessible()) { field.setAccessible(true); } resourcePath = properties.getProperty(field.getName()); File bundleEntry; bundleEntry = Commons.getBundleEntry(bundle, resourcePath); field.set(null, bundleEntry); } } }