[Title] InstallManager can check that input paths are duplicated and has
authoryongsung1.kim <yongsung1.kim@samsung.com>
Thu, 4 Jul 2013 09:45:29 +0000 (18:45 +0900)
committeryongsung1.kim <yongsung1.kim@samsung.com>
Thu, 4 Jul 2013 09:45:29 +0000 (18:45 +0900)
wrong pattern both SDK install path and SDK data path same time.
[Desc.]
[Issue] redmine #9851

Change-Id: I6c16b893087144ac5dc51b1d78a200e4307c9c5b

InstallManager_java/src/org/tizen/installmanager/ui/page/SetInstallDirectoryPage.java

index 4901533..2d9e47a 100644 (file)
@@ -89,6 +89,11 @@ public class SetInstallDirectoryPage extends PageTemplate {
        boolean availableInstallPath = false;
        boolean availableWorkSpacePath = false;
        boolean isWorkSpaceDuplicate = false;
+       
+       private enum SDKLABEL {
+               TARGET,
+               DATAPATH
+       }
 
        /**
         * @param parent
@@ -156,7 +161,8 @@ public class SetInstallDirectoryPage extends PageTemplate {
                installDirectoryText.addModifyListener(new ModifyListener() {
                        @Override
                        public void modifyText(ModifyEvent arg0) {
-                               if (checkPattern() && checkDuplicatePath(installDirectoryText.getText(), true)) {
+                               if (checkPattern(SDKLABEL.TARGET) && 
+                                               checkDuplicatePath(installDirectoryText.getText(), SDKLABEL.TARGET)) {
                                        availableInstallPath = true;
                                } else {
                                        availableInstallPath = false;
@@ -218,17 +224,23 @@ public class SetInstallDirectoryPage extends PageTemplate {
                sdkWorkSpaceText.addModifyListener(new ModifyListener() {
                        @Override
                        public void modifyText(ModifyEvent arg0) {
-                               if (checkPattern()) {
+                               if (checkPattern(SDKLABEL.DATAPATH)) {
                                        availableWorkSpacePath = true;
                                } else {
                                        availableWorkSpacePath = false;
                                }
                                
-                               if (checkDuplicatePath(sdkWorkSpaceText.getText(), false)) {
+                               if (checkDuplicatePath(sdkWorkSpaceText.getText(), SDKLABEL.DATAPATH)) {
                                        isWorkSpaceDuplicate = true;
                                } else {
                                        isWorkSpaceDuplicate = false;
                                }
+                               
+                               if (checkDuplicatePath(installDirectoryText.getText(), SDKLABEL.TARGET)) {
+                                       availableInstallPath = true;
+                               } else {
+                                       availableInstallPath = false;
+                               }
 
                                InstallManagerWindow.setNextBtnEnabled(availableInstallPath && availableWorkSpacePath);
                        }
@@ -258,7 +270,7 @@ public class SetInstallDirectoryPage extends PageTemplate {
        
        private void setErrLabel() {
                installErrLabel = new Label(customComposite, SWT.WRAP);
-               installErrLabel.setBounds(20, 170, 400, 50);
+               installErrLabel.setBounds(20, 190, 400, 50);
                installErrLabel.setBackground(InstallManagerWindow.getBackgroundColor());
                installErrLabel.setForeground(new Color(null, 255, 0, 0));
        }
@@ -273,40 +285,52 @@ public class SetInstallDirectoryPage extends PageTemplate {
                spaceAvailableLabel.setBackground(InstallManagerWindow.getBackgroundColor());
        }
        
-       private boolean checkDuplicatePath(String path, boolean isTargetDir) {
+       private boolean checkDuplicatePath(String path, SDKLABEL sdkLabel) {
                File duplicate = new File(path);
                
-               if (isTargetDir) {
+               if (sdkLabel == SDKLABEL.TARGET) {
                        if (duplicate.exists()) {
-                               installErrLabel.setText("Input path is used already. you must input another path.");
+                               installErrLabel.setText("The input SDK install path is used already. you must input another path.");
                                return false;
                        } else {
-                               installErrLabel.setText("");
                                return true;
                        }                       
-               } else {
+               } else if (sdkLabel == SDKLABEL.DATAPATH) {
                        if (duplicate.exists()) {
                                return false;
                        } else {
                                return true;
                        }
+               } else {
+                       Log.err("Unknown label in set install path page.");
+                       return false;
                }
        }
        
-       private boolean checkPattern() {
+       private boolean checkPattern(SDKLABEL sdkLabel) {
+               String text = "";
+               if (sdkLabel == SDKLABEL.TARGET) {
+                       text = installDirectoryText.getText();
+               } else if (sdkLabel == SDKLABEL.DATAPATH) {
+                       text = sdkWorkSpaceText.getText();
+               } else {
+                       Log.err("Unknown label in set install path page.");
+                       return false;
+               }
+                               
                try {
                        if (Platform.isUbuntu() || Platform.isMacOS()) {
-                               if (!sdkWorkSpaceText.getText().matches("[^= ]+")) {
+                               if (!text.matches("[^= ]+")) {
                                        installErrLabel.setText("Value cannot contain the '=' character or spaces.");
                                        return false;
                                } else {
-                                       if (!sdkWorkSpaceText.getText().startsWith(System.getProperty("user.home"))) {
-                                               installErrLabel.setText("Set the installation path to the home directory.");
+                                       if (!text.startsWith(System.getProperty("user.home"))) {
+                                               installErrLabel.setText("Set the input path to the home directory.");
                                                return false;
                                        }
                                }
                        } else if (Platform.isWindows()) {
-                               if (!sdkWorkSpaceText.getText().matches("[^`~!@#$%^&*=? ]+")) {
+                               if (!text.matches("[^`~!@#$%^&*=? ]+")) {
                                        installErrLabel.setText("Value cannot contain special characters or spaces.");
                                        return false;
                                }
@@ -320,26 +344,36 @@ public class SetInstallDirectoryPage extends PageTemplate {
                return true;
        }
        
-       private boolean checkAvailablePath() {
+       private boolean checkAvailablePath(SDKLABEL sdkLabel) {
                if (installDirectoryText.getText().equals("")) {
                        installErrLabel.setText("Set the installation path.");
                        spaceAvailableLabel.setText("Space available : ");
                        return false;
                }
 
+               String text = "";
+               if (sdkLabel == SDKLABEL.TARGET) {
+                       text = installDirectoryText.getText();
+               } else if (sdkLabel == SDKLABEL.DATAPATH) {
+                       text = sdkWorkSpaceText.getText();
+               } else {
+                       Log.err("Unknown label in set install path page.");
+                       return false;
+               }
+                               
                try {
                        if (Platform.isUbuntu() || Platform.isMacOS()) {
-                               if (!installDirectoryText.getText().matches("[^= ]+")) {
+                               if (!text.matches("[^= ]+")) {
                                        installErrLabel.setText("Value cannot contain the '=' character or spaces.");
                                        return false;
                                } else {
-                                       if (!installDirectoryText.getText().startsWith(System.getProperty("user.home"))) {
+                                       if (!text.startsWith(System.getProperty("user.home"))) {
                                                installErrLabel.setText("Set the installation path to the home directory.");
                                                return false;
                                        }
                                }
                        } else if (Platform.isWindows()) {
-                               if (!installDirectoryText.getText().matches("[^`~!@#$%^&*=? ]+")) {
+                               if (!text.matches("[^`~!@#$%^&*=? ]+")) {
                                        installErrLabel.setText("Value cannot contain special characters or spaces.");
                                        return false;
                                }
@@ -381,7 +415,8 @@ public class SetInstallDirectoryPage extends PageTemplate {
                sdkWorkSpaceText.setEnabled(Config.isNewPackageServer);
                selectDataPathBtn.setEnabled(Config.isNewPackageServer);
                
-               InstallManagerWindow.setNextBtnEnabled(checkAvailablePath() && checkDuplicatePath(installDirectoryText.getText(), true));
+               InstallManagerWindow.setNextBtnEnabled(checkAvailablePath(SDKLABEL.TARGET) && 
+                               checkDuplicatePath(installDirectoryText.getText(), SDKLABEL.TARGET));
                setAvailableSpace(installDirectoryText.getText());
 
                spaceRequiredLabel.setText("Download size : " + convertToVolumeSize(requiredSize));