Signed-off-by: Ioana Grigoropol <ioanax.grigoro...@intel.com>
---
 .../ui/wizards/NewBitBakeFileRecipeWizardPage.java |  119 +++++++++++++-------
 1 file changed, 78 insertions(+), 41 deletions(-)

diff --git 
a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
 
b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
index e27619e..e9dc1f3 100644
--- 
a/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
+++ 
b/plugins/org.yocto.bc.ui/src/org/yocto/bc/ui/wizards/NewBitBakeFileRecipeWizardPage.java
@@ -11,6 +11,7 @@
  
*******************************************************************************/
 package org.yocto.bc.ui.wizards;
 
+import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.util.ArrayList;
@@ -27,6 +28,7 @@ import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IProgressMonitor;
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.jface.window.Window;
@@ -74,6 +76,8 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
        private IHost connection;
 
        private String tempFolderPath;
+       private String srcFileNameExt;
+       private String srcFileName;
 
        public static final String TEMP_FOLDER_NAME = "temp";
        public static final String TAR_BZ2_EXT = ".tar.bz2";
@@ -98,6 +102,12 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
        private static final String md5Pattern = "^[0-9a-f]{32}$";
        protected static final String sha256Pattern = "^[0-9a-f]{64}$";
 
+       private HashMap<String, String> mirrorTable;
+       private URI extractDir;
+       private YoctoCommand licenseChecksumCmd;
+       protected YoctoCommand md5YCmd;
+       protected YoctoCommand sha256YCmd;
+
        public NewBitBakeFileRecipeWizardPage(ISelection selection, IHost 
connection) {
                super("wizardPage");
                setTitle("BitBake Recipe");
@@ -300,16 +310,17 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
                        IProgressMonitor monitor = new NullProgressMonitor();
                        URI srcURI = new URI(txtSrcURI.getText().trim());
                        String scheme = srcURI.getScheme();
-                       String srcFileName = getSrcFileName(true);
+                       this.srcFileNameExt = getSrcFileName(true);
+                       this.srcFileName = getSrcFileName(false);
                        if ((scheme.equals(HTTP) || scheme.equals(FTP))
-                                       && (srcFileName.endsWith(TAR_GZ_EXT) || 
srcFileName.endsWith(TAR_BZ2_EXT))) {
+                                       && (srcFileNameExt.endsWith(TAR_GZ_EXT) 
|| srcFileNameExt.endsWith(TAR_BZ2_EXT))) {
                                try {
                                        handleRemotePopulate(srcURI, monitor);
                                } catch (Exception e) {
                                        e.printStackTrace();
                                }
                        } else {
-                               String packageName = 
getSrcFileName(false).replace("-", "_");
+                               String packageName = srcFileName.replace("-", 
"_");
                                fileText.setText(packageName + BB_RECIPE_EXT);
 
                                handleLocalPopulate(srcURI, monitor);
@@ -320,52 +331,78 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
        }
 
        private void handleLocalPopulate(URI srcURI, IProgressMonitor monitor) {
-               populateLicenseFileChecksum(srcURI, monitor);
+               populateLicenseFileChecksum(srcURI);
                populateInheritance(srcURI, monitor);
        }
 
-       private void handleRemotePopulate(URI srcURI, IProgressMonitor monitor) 
throws Exception {
+       private void handleRemotePopulate(final URI srcURI, IProgressMonitor 
monitor) throws Exception {
                RemoteHelper.clearProcessBuffer(connection);
-
                populateRecipeName(srcURI);
-               List<YoctoCommand> commands = new ArrayList<YoctoCommand>();
 
-               String metaDirLocPath = metaDirLoc.getPath();
-               commands.add(new YoctoCommand("rm -rf " + TEMP_FOLDER_NAME, 
metaDirLocPath, ""));
-               commands.add(new YoctoCommand( "mkdir " + TEMP_FOLDER_NAME, 
metaDirLocPath, ""));
-               updateTempFolderPath();
+               this.getContainer().run(true, true, new IRunnableWithProgress() 
{
 
+                       @Override
+                       public void run(IProgressMonitor monitor) throws 
InvocationTargetException,
+                                       InterruptedException {
+                               monitor.beginTask("Populating recipe fields ... 
", 100);
+                               List<YoctoCommand> commands = new 
ArrayList<YoctoCommand>();
 
-               try {
-                       commands.add(new YoctoCommand("wget " + srcURI.toURL(), 
tempFolderPath, ""));
+                               try {
+                                       String metaDirLocPath = 
metaDirLoc.getPath();
 
-                       updateTempFolderPath();
-                       RemoteHelper.runBatchRemote(connection, commands, true);
+                                       monitor.subTask("Cleaning environment");
+                                       commands.add(new YoctoCommand("rm -rf " 
+ TEMP_FOLDER_NAME, metaDirLocPath, ""));
+                                       commands.add(new YoctoCommand( "mkdir " 
+ TEMP_FOLDER_NAME, metaDirLocPath, ""));
+                                       updateTempFolderPath();
+                                       monitor.worked(10);
 
-                       commands.clear();
+                                       monitor.subTask("Downloading package 
sources");
+                                       commands.add(new YoctoCommand("wget " + 
srcURI.toURL(), tempFolderPath, ""));
 
-                       String md5Cmd = "md5sum " + getSrcFileName(true);
-                       YoctoCommand md5YCmd = new YoctoCommand(md5Cmd, 
tempFolderPath, "");
-                       RemoteHelper.runCommandRemote(connection, md5YCmd);
+                                       updateTempFolderPath();
+                                       RemoteHelper.runBatchRemote(connection, 
commands, true);
 
-                       String sha256Cmd = "sha256sum " + getSrcFileName(true);
-                       YoctoCommand sha256YCmd = new YoctoCommand(sha256Cmd, 
tempFolderPath, "");
-                       RemoteHelper.runCommandRemote(connection, sha256YCmd);
+                                       commands.clear();
+                                       monitor.worked(50);
 
-                       URI extractDir = extractPackage(srcURI, monitor);
-                       YoctoCommand licenseChecksumCmd = 
populateLicenseFileChecksum(extractDir, monitor);
-                       updateSrcUri(createMirrorLookupTable(monitor), srcURI);
-                       populateInheritance(extractDir, monitor);
+                                       monitor.subTask("Compute package 
checksums");
+                                       String md5Cmd = "md5sum " + 
srcFileNameExt;
+                                       md5YCmd = new YoctoCommand(md5Cmd, 
tempFolderPath, "");
+                                       
RemoteHelper.runCommandRemote(connection, md5YCmd);
 
-                       String md5Val = retrieveSum(md5YCmd);
-                       md5sumText.setText(Pattern.matches(md5Pattern,  md5Val) 
? md5Val : "");
-                       String sha256Val = retrieveSum(sha256YCmd);
-                       sha256sumText.setText(Pattern.matches(sha256Pattern,  
sha256Val) ? sha256Val : "");
-                       String checkSumVal =  retrieveSum(licenseChecksumCmd);
-                       
checksumText.setText(RemoteHelper.createNewURI(extractDir, 
COPYING_FILE).toString() + ";md5=" + (Pattern.matches(md5Pattern,  checkSumVal) 
? checkSumVal : ""));
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
+                                       monitor.worked(60);
+
+                                       String sha256Cmd = "sha256sum " + 
srcFileNameExt;
+                                       sha256YCmd = new 
YoctoCommand(sha256Cmd, tempFolderPath, "");
+                                       
RemoteHelper.runCommandRemote(connection, sha256YCmd);
+
+                                       monitor.worked(70);
+
+                                       monitor.subTask("Extracting package");
+                                       extractDir = extractPackage(srcURI);
+                                       monitor.worked(80);
+
+                                       licenseChecksumCmd = 
populateLicenseFileChecksum(extractDir);
+
+                                       monitor.subTask("Creating mirror lookup 
table");
+                                       mirrorTable = createMirrorLookupTable();
+
+                                       monitor.worked(90);
+                                       monitor.done();
+                               } catch (Exception e) {
+                                       e.printStackTrace();
+                               }
+                       }
+               });
+               updateSrcUri(mirrorTable, srcURI);
+               populateInheritance(extractDir, monitor);
+
+               String md5Val = retrieveSum(md5YCmd);
+               md5sumText.setText(Pattern.matches(md5Pattern,  md5Val) ? 
md5Val : "");
+               String sha256Val = retrieveSum(sha256YCmd);
+               sha256sumText.setText(Pattern.matches(sha256Pattern,  
sha256Val) ? sha256Val : "");
+               String checkSumVal =  retrieveSum(licenseChecksumCmd);
+               checksumText.setText(RemoteHelper.createNewURI(extractDir, 
COPYING_FILE).toString() + ";md5=" + (Pattern.matches(md5Pattern,  checkSumVal) 
? checkSumVal : ""));
        }
 
        private String retrieveSum(YoctoCommand cmd) {
@@ -378,9 +415,9 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
                return "";
        }
 
-       private URI extractPackage(URI srcURI, IProgressMonitor monitor) {
+       private URI extractPackage(URI srcURI) {
                try {
-                       String path = getSrcFileName(true);
+                       String path = srcFileNameExt;
                        String tarCmd = "tar ";
                        if (path.endsWith(TAR_BZ2_EXT)) {
                                tarCmd += "-zxvf ";
@@ -390,7 +427,7 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
 
                        RemoteHelper.runCommandRemote(connection, new 
YoctoCommand(tarCmd + path, tempFolderPath, ""));
 
-                       return RemoteHelper.createNewURI(metaDirLoc, 
TEMP_FOLDER_NAME + "/" + getSrcFileName(false));
+                       return RemoteHelper.createNewURI(metaDirLoc, 
TEMP_FOLDER_NAME + "/" + srcFileName);
 
                } catch (Exception e) {
                        e.printStackTrace();
@@ -424,7 +461,7 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
                }
        }
 
-       private YoctoCommand populateLicenseFileChecksum(URI extractDir, 
IProgressMonitor monitor) {
+       private YoctoCommand populateLicenseFileChecksum(URI extractDir) {
                if (extractDir == null)
                        throw new RuntimeException("Something went wrong during 
source extraction!");
 
@@ -459,7 +496,7 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
                return "";
        }
 
-       private HashMap<String, String> 
createMirrorLookupTable(IProgressMonitor monitor) throws Exception {
+       private HashMap<String, String> createMirrorLookupTable() throws 
Exception {
                HashMap<String, String> mirrorMap = new HashMap<String, 
String>();
 
                YoctoCommand cmd = new YoctoCommand("cat " + MIRRORS_FILE, 
getMetaFolderPath() + CLASSES_FOLDER, "");
@@ -486,7 +523,7 @@ public class NewBitBakeFileRecipeWizardPage extends 
WizardPage {
                if (!fileName.isEmpty())
                        return;
 
-               String recipeFile = getSrcFileName(false).replace("-", "_");
+               String recipeFile = srcFileName.replace("-", "_");
                recipeFile += BB_RECIPE_EXT;
                if (recipeFile != null)
                        fileText.setText(recipeFile);
-- 
1.7.9.5

_______________________________________________
yocto mailing list
yocto@yoctoproject.org
https://lists.yoctoproject.org/listinfo/yocto

Reply via email to