BuildUtilities.java 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package be.uantwerpen.ansymo.semanticadaptation.cg.cpp.generation;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.FileWriter;
  6. import java.io.IOException;
  7. import java.io.InputStream;
  8. import java.nio.file.Files;
  9. import java.nio.file.StandardCopyOption;
  10. import java.util.LinkedList;
  11. import java.util.List;
  12. import java.util.jar.JarEntry;
  13. import java.util.jar.JarInputStream;
  14. public class BuildUtilities {
  15. public void copyNativeLibFiles(File outfolder) {
  16. List<File> libFiles;
  17. File outputFile = null;
  18. InputStream jarfile = null;
  19. FileOutputStream fos = null;
  20. JarInputStream jarstream = null;
  21. JarEntry filejarentry = null;
  22. if (!outfolder.exists()) {
  23. outfolder.mkdir();
  24. }
  25. else
  26. {
  27. return;
  28. }
  29. libFiles = new LinkedList<>();
  30. try {
  31. jarfile = new FileInputStream(new File("jars/cppFramework.jar"));
  32. jarstream = new JarInputStream(jarfile);
  33. filejarentry = jarstream.getNextJarEntry();
  34. // Extract the framework files
  35. while (filejarentry != null) {
  36. System.out.println("Extracting file: " + filejarentry.getName());
  37. if (!filejarentry.getName().contains("hybridCosimulation-framework") || filejarentry.isDirectory()) {
  38. filejarentry = jarstream.getNextJarEntry();
  39. continue;
  40. }
  41. // Ignore these files
  42. if (filejarentry.getName().contains(".gitignore") || filejarentry.getName().contains(".gitmodules")
  43. /*|| filejarentry.getName().contains("README.md")*/ || filejarentry.getName().contains("LICENSE")) {
  44. filejarentry = jarstream.getNextJarEntry();
  45. continue;
  46. }
  47. String tmpFileName = filejarentry.getName().replace("hybridCosimulation-framework/", "");
  48. outputFile = new File(outfolder.toString() + File.separator + tmpFileName);
  49. libFiles.add(new File(outfolder.getName() + File.separator + tmpFileName));
  50. outputFile.getParentFile().mkdirs();
  51. fos = new FileOutputStream(outputFile);
  52. while (jarstream.available() > 0) {
  53. int b = jarstream.read();
  54. if (b >= 0) {
  55. fos.write(b);
  56. }
  57. }
  58. fos.flush();
  59. fos.close();
  60. jarstream.closeEntry();
  61. filejarentry = jarstream.getNextJarEntry();
  62. }
  63. jarstream.close();
  64. jarfile.close();
  65. } catch (IOException e) {
  66. e.printStackTrace();
  67. }
  68. }
  69. public static void writeToFile(File file, String content) throws IOException
  70. {
  71. FileWriter writer = new FileWriter(file);
  72. writer.write(content);
  73. writer.close();
  74. System.out.println("Stored file: " + file);
  75. }
  76. public static void copyFile(File sourceFile, File sinkFile) throws IOException {
  77. Files.copy(sourceFile.toPath(), sinkFile.toPath(), StandardCopyOption.REPLACE_EXISTING);
  78. }
  79. public static void deleteFolder(File folder) {
  80. File[] files = folder.listFiles();
  81. if (files != null) { // some JVMs return null for empty dirs
  82. for (File f : files) {
  83. if (f.isDirectory()) {
  84. deleteFolder(f);
  85. } else {
  86. f.delete();
  87. }
  88. }
  89. }
  90. folder.delete();
  91. }
  92. }