public static void unzipInteralZip( ClassLoader classLoader, String resourcePath, File libDir, boolean debug) { if (debug) System.out.println("Extracting " + resourcePath); libDir.mkdir(); URL resource = classLoader.getResource(resourcePath); if (resource == null) { System.err.println("Could not find the " + resourcePath + " on classpath!"); System.exit(1); } class PrintDot extends TimerTask { public void run() { System.out.print("."); } } Timer timer = new Timer(); PrintDot task = new PrintDot(); timer.schedule(task, 0, 2000); try { BufferedInputStream bis = new BufferedInputStream(resource.openStream()); JarInputStream jis = new JarInputStream(bis); JarEntry je = null; while ((je = jis.getNextJarEntry()) != null) { java.io.File f = new java.io.File(libDir.toString() + java.io.File.separator + je.getName()); if (je.isDirectory()) { f.mkdir(); continue; } File parentDir = new File(f.getParent()); if (!parentDir.exists()) { parentDir.mkdir(); } FileOutputStream fileOutStream = new FileOutputStream(f); writeStreamTo(jis, fileOutStream, 8 * KB); if (f.getPath().endsWith("pack.gz")) { unpack(f); fileOutStream.close(); f.delete(); } } } catch (Exception exc) { task.cancel(); exc.printStackTrace(); } task.cancel(); }
public static void testBumpSubBuilders() throws Exception { File tmp = new File("tmp-ws"); if (tmp.exists()) IO.deleteWithException(tmp); tmp.mkdir(); assertTrue(tmp.isDirectory()); try { IO.copy(new File("test/ws"), tmp); Workspace ws = Workspace.getWorkspace(tmp); Project project = ws.getProject("bump-sub"); project.setTrace(true); assertNull(project.getProperty("Bundle-Version")); project.bump("=+0"); assertNull(project.getProperty("Bundle-Version")); for (Builder b : project.getSubBuilders()) { assertEquals(new Version(1, 1, 0), new Version(b.getVersion())); } } finally { IO.deleteWithException(tmp); } }
public static void testBumpIncludeFile() throws Exception { File tmp = new File("tmp-ws"); if (tmp.exists()) IO.deleteWithException(tmp); tmp.mkdir(); assertTrue(tmp.isDirectory()); try { IO.copy(new File("test/ws"), tmp); Workspace ws = Workspace.getWorkspace(tmp); Project project = ws.getProject("bump-included"); project.setTrace(true); Version old = new Version(project.getProperty("Bundle-Version")); assertEquals(new Version(1, 0, 0), old); project.bump("=+0"); Processor processor = new Processor(); processor.setProperties(project.getFile("include.txt")); Version newv = new Version(processor.getProperty("Bundle-Version")); System.err.println("New version " + newv); assertEquals(1, newv.getMajor()); assertEquals(1, newv.getMinor()); assertEquals(0, newv.getMicro()); } finally { IO.deleteWithException(tmp); } }
public static void testBump() throws Exception { File tmp = new File("tmp-ws"); if (tmp.exists()) IO.deleteWithException(tmp); tmp.mkdir(); assertTrue(tmp.isDirectory()); try { IO.copy(new File("test/ws"), tmp); Workspace ws = Workspace.getWorkspace(tmp); Project project = ws.getProject("p1"); int size = project.getProperties().size(); Version old = new Version(project.getProperty("Bundle-Version")); System.err.println("Old version " + old); project.bump("=+0"); Version newv = new Version(project.getProperty("Bundle-Version")); System.err.println("New version " + newv); assertEquals(old.getMajor(), newv.getMajor()); assertEquals(old.getMinor() + 1, newv.getMinor()); assertEquals(0, newv.getMicro()); assertEquals(size, project.getProperties().size()); assertEquals("sometime", newv.getQualifier()); } finally { IO.deleteWithException(tmp); } }
/** * Constructor * * @throws IOException */ public JustAnotherPackageManager(Reporter reporter, Platform platform, File homeDir, File binDir) throws IOException { this.platform = platform; this.reporter = reporter; this.homeDir = homeDir; if (!homeDir.exists() && !homeDir.mkdirs()) throw new IllegalArgumentException("Could not create directory " + homeDir); repoDir = IO.getFile(homeDir, "repo"); if (!repoDir.exists() && !repoDir.mkdirs()) throw new IllegalArgumentException("Could not create directory " + repoDir); commandDir = new File(homeDir, COMMANDS); serviceDir = new File(homeDir, SERVICE); commandDir.mkdir(); serviceDir.mkdir(); service = new File(repoDir, SERVICE_JAR_FILE); if (!service.isFile()) init(); this.binDir = binDir; if (!binDir.exists() && !binDir.mkdirs()) throw new IllegalArgumentException("Could not create bin directory " + binDir); }
public static void testSetPackageVersion() throws Exception { File tmp = new File("tmp-ws"); if (tmp.exists()) IO.deleteWithException(tmp); tmp.mkdir(); assertTrue(tmp.isDirectory()); try { IO.copy(new File("test/ws"), tmp); Workspace ws = Workspace.getWorkspace(tmp); Project project = ws.getProject("p5"); project.setTrace(true); Version newVersion = new Version(2, 0, 0); // Package with no package info project.setPackageInfo("pkg1", newVersion); Version version = project.getPackageInfo("pkg1"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg1", true, false); // Package with package-info.java containing @Version("1.0.0") project.setPackageInfo("pkg2", newVersion); version = project.getPackageInfo("pkg2"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg2", false, true); // Package with package-info.java containing @aQute.bnd.annotations.Version("1.0.0") project.setPackageInfo("pkg3", newVersion); version = project.getPackageInfo("pkg3"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg3", false, true); // Package with package-info.java containing @aQute.bnd.annotations.Version(value="1.0.0") project.setPackageInfo("pkg4", newVersion); version = project.getPackageInfo("pkg4"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg4", false, true); // Package with package-info.java containing version + packageinfo project.setPackageInfo("pkg5", newVersion); version = project.getPackageInfo("pkg5"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg5", true, true); // Package with package-info.java NOT containing version + packageinfo project.setPackageInfo("pkg6", newVersion); version = project.getPackageInfo("pkg6"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg6", true, true); // Package with package-info.java NOT containing version project.setPackageInfo("pkg7", newVersion); version = project.getPackageInfo("pkg7"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg7", true, true); newVersion = new Version(2, 2, 0); // Update packageinfo file project.setPackageInfo("pkg1", newVersion); version = project.getPackageInfo("pkg1"); assertEquals(newVersion, version); checkPackageInfoFiles(project, "pkg1", true, false); } finally { IO.deleteWithException(tmp); } }
/** * Creates the java help * * @param path the path where to create the java help * @param lang the spoken language */ private void createJavaHelp(File path, String lang) { File pages = new File(path, "pages"); if (pages.exists()) deleteDir(pages); pages.mkdir(); File javahelpsearch = new File(path, SEARCH_DIR); if (javahelpsearch.exists()) deleteDir(javahelpsearch); File helpset_file = new File(path, HELPSET_NAME_BASE + lang + HELPSET_NAME_SUFFIX); File config_file = null; File map_file = null; File tam_file = null; String underscore = ""; if (helpset_file.exists()) { // There is a helpset corresponding to the current language map_file = new File(path, MAP_NAME_BASE + lang + MAP_NAME_SUFFIX); tam_file = new File(path, TAM_NAME_BASE + lang + TAM_NAME_SUFFIX); underscore = "_" + lang; } else { // There is no helpset : we use the default one map_file = new File(path + "Map.jhm"); tam_file = new File(path + "TAM.xml"); } config_file = new File(path, CONFIG_FILE); if (config_file.exists()) config_file.delete(); if (map_file.exists()) map_file.delete(); if (tam_file.exists()) tam_file.delete(); boolean test = true; try { // Generates the jhm and copy the file for objects // Generates the TAM.xml file test = test && map_file.createNewFile(); test = test && tam_file.createNewFile(); File lang_dir = new File(path, "Main_pages/" + lang); test = test && lang_dir.exists(); if (test) { print = new PrintWriter(new BufferedWriter(new FileWriter(map_file))); // debut + images print.println( "<?xml version='1.0' encoding='ISO-8859-1' ?>\n " + "<!DOCTYPE map\n" + "PUBLIC \"-//Sun Microsystems Inc.//DTD JavaHelp Map Version 1.0//EN\"\n" + "\"http://java.sun.com/products/javahelp/map_1_0.dtd\">\n" + "\n" + "<map version=\"1.0\">\n" + "<mapID target=\"image\" url=\"Main_pages/logo_cbs_petit.gif\" />\n" + "<mapID target=\"tamicon\" url=\"Main_pages/tam.gif\" />\n" + "<mapID target=\"fileicon\" url=\"Main_pages/file.gif\" />\n" + "<mapID target=\"" + FIRST_PAGE + "\" url=\"pages/" + FIRST_PAGE + ".html\" />"); print2 = new PrintWriter(new BufferedWriter(new FileWriter(tam_file))); print2.println( " <?xml version='1.0' encoding='ISO-8859-1' ?> \n " + "<!DOCTYPE toc \n" + "PUBLIC \"-//Sun Microsystems Inc.//DTD JavaHelp TOC Version 2.0//EN\"\n" + "\"../dtd/toc_2_0.dtd\">\n" + "<toc version=\"2.0\"> \n<tocitem text=\"" + getTitle(new File(path, "Main_pages/" + lang + "/" + FIRST_PAGE + ".html")) + "\" target=\"" + FIRST_PAGE + "\" image=\"image\">"); copyFile( new File(path, "Main_pages/" + lang + "/" + FIRST_PAGE + ".html"), new File(path, "pages/" + FIRST_PAGE + ".html")); // generation of the tree File[] list_lang_dir = lang_dir.listFiles(); for (int a = 0; a < list_lang_dir.length; a++) { if (!list_lang_dir[a].getName().equals("CVS") && list_lang_dir[a].isFile() && !list_lang_dir[a].getName().equals(FIRST_PAGE + ".html")) { mapAndTocForFile(list_lang_dir[a], path, underscore); } } // Ends print.println("</map>"); print.close(); print2.println("</tocitem>\n</toc>"); print2.close(); test = test && config_file.createNewFile(); if (test) { // Generates the config file print = new PrintWriter(new BufferedWriter(new FileWriter(config_file))); print.print("IndexRemove " + path.getAbsolutePath()); print.close(); } } } catch (Exception e) { LOG.error("Error getHelp " + e); } // Generates the search database String[] args = new String[] { pages.getAbsolutePath(), "-c", config_file.getAbsolutePath(), "-db", javahelpsearch.getAbsolutePath(), "-locale", lang }; // Indexer indexer=new Indexer(); // FIXME help desactived // Indexer.main(args); Calendar c = GregorianCalendar.getInstance(); c.setTime(new Date()); int day = c.get(Calendar.DAY_OF_MONTH); int month = c.get(Calendar.MONTH) + 1; int year = c.get(Calendar.YEAR); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); int seconds = c.get(Calendar.SECOND); File log = new File(path, LOG_FILE); try { log.createNewFile(); PrintWriter printlog = new PrintWriter(new BufferedWriter(new FileWriter(log))); printlog.println("Language " + lang); printlog.println( "Date : " + year + " " + month + " " + day + " " + hour + " " + minute + " " + seconds); printlog.close(); } catch (Exception e) { LOG.error("Error while creating log " + e); } }
private void mapAndTocForFile(File f, File path, String underscore) { // we get the single name of the file and the urlname int under_index2 = f.getName().indexOf("_"); int point_index2 = f.getName().indexOf("."); String named = f.getName().substring(under_index2 + 1, point_index2); String tmp = path.getAbsolutePath() + "Main_pages/fr/"; String url_name = f.getPath().replace("\\", "/").substring(tmp.length()); String targetName = url_name.substring(0, url_name.lastIndexOf(".html")); // now we will add into the map and the toc print.println("<mapID target=\"" + targetName + "\" url=\"pages/" + url_name + "\"/>"); File dir_associated = new File(f.getParent(), named); if ((dir_associated.exists() && dir_associated.isDirectory()) || named.equals("objects")) { print2.println( "<tocitem text=\"" + getTitle(f) + "\" target=\"" + targetName + "\" image=\"tamicon\">"); if (dir_associated.exists()) { // Apres on fait pareil pour tous les sous fichiers File[] sub_files = dir_associated.listFiles(); for (int i = 0; i < sub_files.length; i++) { if (!sub_files[i].getName().equals("CVS") && sub_files[i].isFile()) { if (sub_files[i].getName().endsWith(".html")) mapAndTocForFile(sub_files[i], path, underscore); else { try { copyFile( sub_files[i], new File(path, "pages/" + named + "/" + sub_files[i].getName())); } catch (IOException e) { LOG.error("Error while copying normal files in help " + e); } } } } } if (named.equals("objects")) { // Specialement pour les objets on les rajoute tous File objects_dir = new File( Configuration.instance() .getTangaraPath() .getParentFile() .getAbsolutePath() .replace("\\", "/") + "/objects/"); File[] listfiles = objects_dir.listFiles(); Vector<String> list_names = new Vector<String>(); HashMap<String, String> map = new HashMap<String, String>(); for (int i = 0; i < listfiles.length; i++) { try { if (listfiles[i].getName().endsWith(".jar")) { int point_index = listfiles[i].getName().lastIndexOf("."); String name = listfiles[i].getName().substring(0, point_index); // Copy the pages in the right directory File object_dir = new File(path, "pages/" + name); object_dir.mkdir(); File object_ressource = new File( Configuration.instance() .getTangaraPath() .getParentFile() .getAbsolutePath() .replace("\\", "/") + "/objects/resources/" + name + "/Help"); if (object_ressource.exists()) { File[] list_html_object = object_ressource.listFiles(); for (int e = 0; e < list_html_object.length; e++) { if (list_html_object[e].getName().endsWith(".html")) { int under_index = list_html_object[e].getName().lastIndexOf("_"); if (underscore.equals("") && under_index == -1) copyFile( list_html_object[e], new File(path, "pages/" + name + "/" + list_html_object[e].getName())); else if (!underscore.equals("")) { if (list_html_object[e].getName().contains(underscore)) copyFile( list_html_object[e], new File(path, "pages/" + name + "/" + list_html_object[e].getName())); } } else copyFile( list_html_object[e], new File(path, "pages/" + name + "/" + list_html_object[e].getName())); } // Gets the name of the object in the selected language String name_lang = null; if (underscore.equals("")) name_lang = name; else { name_lang = getLangName(listfiles[i]); } if (name_lang != null) { list_names.add(name_lang); map.put(name_lang, name); // Add to the map file print.println( "<mapID target=\"" + name + "\" url=\"pages/" + name + "/index" + underscore + ".html\" />"); } } } } catch (Exception e2) { LOG.error("Error2 getHelp " + e2); } } // Add to the tam file Collections.sort(list_names); for (String s : list_names) { print2.println( "<tocitem text=\"" + s + "\" target=\"" + map.get(s) + "\" image=\"fileicon\" />"); } } print2.println("</tocitem>"); } else { // pas de sous fichiers print2.println( "<tocitem text=\"" + getTitle(f) + "\" target=\"" + targetName + "\" image=\"fileicon\"/>"); } File parent = new File(path, "pages/" + url_name.substring(0, url_name.lastIndexOf(named) - 3)); if (!parent.exists()) parent.mkdirs(); File in_pages = new File(path, "pages/" + url_name); try { in_pages.createNewFile(); copyFile(f, in_pages); } catch (IOException e3) { LOG.error("Error 3 getHelp " + e3 + " " + f.getName()); } }