Ignore:
Timestamp:
Mar 17, 2013, 6:52:08 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.99t:

  • Access to files/folders which can be different in case because of user interaction are now case insensitive
  • Few cleanups
Location:
AE/installer2/src/net/oni2/aeinstaller/backend
Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/backend/Paths.java

    r625 r699  
    9292         */
    9393        public static File getVanillaGDF() {
    94                 return new File(getOniBasePath(), "GameDataFolder");
     94                return CaseInsensitiveFile.getCaseInsensitiveFile(getOniBasePath(), "GameDataFolder");
    9595        }
    9696
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java

    r698 r699  
    2222
    2323import net.oni2.aeinstaller.AEInstaller2;
     24import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
    2425import net.oni2.aeinstaller.backend.Paths;
    2526import net.oni2.aeinstaller.backend.Settings;
     
    111112        /**
    112113         * @param tools
    113          *            Tools to install
     114         *            Tools to (un)install
     115         * @param uninstall
     116         *            Uninstall tools or install?
    114117         */
    115         public static void installTools(TreeSet<Package> tools) {
     118        public static void installTools(TreeSet<Package> tools, boolean uninstall) {
    116119                TreeSet<Integer> installed = getInstalledTools();
    117120                for (Package m : tools) {
    118                         File plain = new File(m.getLocalPath(), "plain");
    119                         if (plain.exists()) {
    120                                 if (m.hasSeparatePlatformDirs()) {
    121                                         File plainCommon = new File(plain, "common");
    122                                         File plainMac = new File(plain, "mac_only");
    123                                         File plainWin = new File(plain, "win_only");
    124                                         if (plainCommon.exists())
    125                                                 copyToolsFiles(plainCommon);
    126                                         if (Settings.getPlatform() == Platform.MACOS
    127                                                         && plainMac.exists())
    128                                                 copyToolsFiles(plainMac);
    129                                         else if (plainWin.exists())
    130                                                 copyToolsFiles(plainWin);
    131                                 } else {
    132                                         copyToolsFiles(plain);
    133                                 }
    134                         }
    135                         installed.add(m.getPackageNumber());
    136                 }
    137                 writeInstalledTools(installed);
    138         }
    139 
    140         /**
    141          * @param tools
    142          *            Tools to uninstall
    143          */
    144         public static void uninstallTools(TreeSet<Package> tools) {
    145                 TreeSet<Integer> installed = getInstalledTools();
    146                 for (Package m : tools) {
    147                         if (installed.contains(m.getPackageNumber())) {
    148                                 File plain = new File(m.getLocalPath(), "plain");
     121                        if (!uninstall || installed.contains(m.getPackageNumber())) {
     122                                File plain = CaseInsensitiveFile.getCaseInsensitiveFile(
     123                                                m.getLocalPath(), "plain");
    149124                                if (plain.exists()) {
    150125                                        if (m.hasSeparatePlatformDirs()) {
    151                                                 File plainCommon = new File(plain, "common");
    152                                                 File plainMac = new File(plain, "mac_only");
    153                                                 File plainWin = new File(plain, "win_only");
     126                                                File plainCommon = CaseInsensitiveFile
     127                                                                .getCaseInsensitiveFile(plain, "common");
     128                                                File plainMac = CaseInsensitiveFile
     129                                                                .getCaseInsensitiveFile(plain, "mac_only");
     130                                                File plainWin = CaseInsensitiveFile
     131                                                                .getCaseInsensitiveFile(plain, "win_only");
    154132                                                if (plainCommon.exists())
    155                                                         removeToolsFiles(plainCommon,
    156                                                                         Paths.getEditionBasePath());
     133                                                        copyRemoveToolsFiles(plainCommon,
     134                                                                        Paths.getEditionBasePath(), uninstall);
    157135                                                if (Settings.getPlatform() == Platform.MACOS
    158136                                                                && plainMac.exists())
    159                                                         removeToolsFiles(plainMac,
    160                                                                         Paths.getEditionBasePath());
     137                                                        copyRemoveToolsFiles(plainMac,
     138                                                                        Paths.getEditionBasePath(), uninstall);
    161139                                                else if (plainWin.exists())
    162                                                         removeToolsFiles(plainWin,
    163                                                                         Paths.getEditionBasePath());
     140                                                        copyRemoveToolsFiles(plainWin,
     141                                                                        Paths.getEditionBasePath(), uninstall);
    164142                                        } else {
    165                                                 removeToolsFiles(plain, Paths.getEditionBasePath());
     143                                                copyRemoveToolsFiles(plain, Paths.getEditionBasePath(),
     144                                                                uninstall);
    166145                                        }
    167146                                }
    168147                        }
    169                         installed.remove(m.getPackageNumber());
     148                        if (uninstall)
     149                                installed.remove(m.getPackageNumber());
     150                        else
     151                                installed.add(m.getPackageNumber());
    170152                }
    171153                writeInstalledTools(installed);
    172154        }
    173155
    174         private static void copyToolsFiles(File srcFolder) {
     156        private static void copyRemoveToolsFiles(File srcFolder, File targetFolder,
     157                        boolean remove) {
    175158                for (File f : srcFolder.listFiles()) {
    176159                        try {
    177160                                if (f.isDirectory())
    178                                         FileUtils.copyDirectoryToDirectory(f,
    179                                                         Paths.getEditionBasePath());
    180                                 else
    181                                         FileUtils
    182                                                         .copyFileToDirectory(f, Paths.getEditionBasePath());
     161                                        copyRemoveToolsFiles(f,
     162                                                        CaseInsensitiveFile.getCaseInsensitiveFile(
     163                                                                        targetFolder, f.getName()), remove);
     164                                else {
     165                                        File targetFile = CaseInsensitiveFile
     166                                                        .getCaseInsensitiveFile(targetFolder,
     167                                                                        f.getName());
     168                                        if (remove) {
     169                                                if (targetFile.exists())
     170                                                        targetFile.delete();
     171                                        } else {
     172                                                if (!targetFile.getName().equals(f.getName()))
     173                                                        targetFile.delete();
     174                                                FileUtils.copyFileToDirectory(f, targetFolder);
     175                                        }
     176                                }
    183177                        } catch (IOException e) {
    184178                                e.printStackTrace();
    185179                        }
    186180                }
    187         }
    188 
    189         private static void removeToolsFiles(File srcFolder, File target) {
    190                 for (File f : srcFolder.listFiles()) {
    191                         if (f.isDirectory())
    192                                 removeToolsFiles(f, new File(target, f.getName()));
    193                         else {
    194                                 File targetFile = new File(target, f.getName());
    195                                 if (targetFile.exists())
    196                                         targetFile.delete();
    197                         }
    198                 }
    199                 if (target.list().length == 0)
    200                         target.delete();
     181                if (remove)
     182                        if (targetFolder.list().length == 0)
     183                                targetFolder.delete();
    201184        }
    202185
     
    258241                                }
    259242                        })) {
    260                                 File ignore = new File(f, "ignore.txt");
     243                                File ignore = CaseInsensitiveFile.getCaseInsensitiveFile(f,
     244                                                "ignore.txt");
    261245                                if (!ignore.exists()) {
    262246                                        try {
     
    283267                                unlockLevels.add(lev);
    284268
    285                         File oni = new File(m.getLocalPath(), "oni");
     269                        File oni = CaseInsensitiveFile.getCaseInsensitiveFile(
     270                                        m.getLocalPath(), "oni");
    286271                        if (oni.exists()) {
    287272                                if (m.hasSeparatePlatformDirs()) {
    288                                         File oniCommon = new File(oni, "common");
    289                                         File oniMac = new File(oni, "mac_only");
    290                                         File oniWin = new File(oni, "win_only");
     273                                        File oniCommon = CaseInsensitiveFile
     274                                                        .getCaseInsensitiveFile(oni, "common");
     275                                        File oniMac = CaseInsensitiveFile.getCaseInsensitiveFile(
     276                                                        oni, "mac_only");
     277                                        File oniWin = CaseInsensitiveFile.getCaseInsensitiveFile(
     278                                                        oni, "win_only");
    291279                                        if (oniCommon.exists())
    292280                                                foldersOni.add(oniCommon);
     
    301289                        }
    302290
    303                         File patches = new File(m.getLocalPath(), "patches");
     291                        File patches = CaseInsensitiveFile.getCaseInsensitiveFile(
     292                                        m.getLocalPath(), "patches");
    304293                        if (patches.exists()) {
    305294                                if (m.hasSeparatePlatformDirs()) {
    306                                         File patchesCommon = new File(patches, "common");
    307                                         File patchesMac = new File(patches, "mac_only");
    308                                         File patchesWin = new File(patches, "win_only");
     295                                        File patchesCommon = CaseInsensitiveFile
     296                                                        .getCaseInsensitiveFile(patches, "common");
     297                                        File patchesMac = CaseInsensitiveFile
     298                                                        .getCaseInsensitiveFile(patches, "mac_only");
     299                                        File patchesWin = CaseInsensitiveFile
     300                                                        .getCaseInsensitiveFile(patches, "win_only");
    309301                                        if (patchesCommon.exists())
    310302                                                foldersPatches.add(patchesCommon);
     
    367359
    368360                for (Package m : mods.descendingSet()) {
    369                         File bsl = new File(m.getLocalPath(), "bsl");
     361                        File bsl = CaseInsensitiveFile.getCaseInsensitiveFile(
     362                                        m.getLocalPath(), "bsl");
    370363                        if (bsl.exists()) {
    371364                                if (m.hasSeparatePlatformDirs()) {
    372                                         File bslCommon = new File(bsl, "common");
    373                                         File bslMac = new File(bsl, "mac_only");
    374                                         File bslWin = new File(bsl, "win_only");
     365                                        File bslCommon = CaseInsensitiveFile
     366                                                        .getCaseInsensitiveFile(bsl, "common");
     367                                        File bslMac = CaseInsensitiveFile.getCaseInsensitiveFile(
     368                                                        bsl, "mac_only");
     369                                        File bslWin = CaseInsensitiveFile.getCaseInsensitiveFile(
     370                                                        bsl, "win_only");
    375371                                        if ((Settings.getPlatform() == Platform.MACOS && bslMac
    376372                                                        .exists())
     
    401397
    402398                Vector<File> sources = new Vector<File>();
    403                 File bsl = new File(sourceMod.getLocalPath(), "bsl");
     399                File bsl = CaseInsensitiveFile.getCaseInsensitiveFile(
     400                                sourceMod.getLocalPath(), "bsl");
    404401                if (sourceMod.hasSeparatePlatformDirs()) {
    405                         File bslCommon = new File(bsl, "common");
    406                         File bslMac = new File(bsl, "mac_only");
    407                         File bslWin = new File(bsl, "win_only");
     402                        File bslCommon = CaseInsensitiveFile.getCaseInsensitiveFile(bsl,
     403                                        "common");
     404                        File bslMac = CaseInsensitiveFile.getCaseInsensitiveFile(bsl,
     405                                        "mac_only");
     406                        File bslWin = CaseInsensitiveFile.getCaseInsensitiveFile(bsl,
     407                                        "win_only");
    408408                        if (Settings.getPlatform() == Platform.MACOS && bslMac.exists()) {
    409409                                for (File f : bslMac.listFiles(dirFileFilter)) {
     
    442442                        if (!targetPath.exists())
    443443                                targetPath.mkdir();
    444                         if (!(new File(targetPath, "ignore.txt").exists())) {
     444                        if (!(CaseInsensitiveFile.getCaseInsensitiveFile(targetPath,
     445                                        "ignore.txt").exists())) {
    445446                                for (File fbsl : f.listFiles()) {
    446447                                        if (fbsl.getName().toLowerCase().endsWith(".bsl")) {
     
    551552                                e.printStackTrace();
    552553                        }
    553                        
     554
    554555                        oniLevelFolders.get(level).add(levelFolder);
    555556                }
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/OniSplit.java

    r698 r699  
    55import java.util.Vector;
    66
     7import net.oni2.aeinstaller.backend.AppExecution;
     8import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
    79import net.oni2.aeinstaller.backend.DotNet;
    810import net.oni2.aeinstaller.backend.Paths;
    9 import net.oni2.aeinstaller.backend.AppExecution;
    1011import net.oni2.aeinstaller.backend.Settings;
    1112import net.oni2.aeinstaller.backend.Settings.Platform;
     
    238239
    239240        private static File getProgramFile() {
    240                 return new File(new File(Paths.getEditionBasePath(), "Tools"),
    241                                 "Onisplit.exe");
     241                File toolsPath = CaseInsensitiveFile.getCaseInsensitiveFile(Paths.getEditionBasePath(), "Tools");
     242                return CaseInsensitiveFile.getCaseInsensitiveFile(toolsPath, "Onisplit.exe");
    242243        }
    243244}
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/XMLTools.java

    r698 r699  
    66
    77import net.oni2.aeinstaller.backend.AppExecution;
     8import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
    89import net.oni2.aeinstaller.backend.DotNet;
    910import net.oni2.aeinstaller.backend.Paths;
     
    4849
    4950        private static File getProgramFile() {
    50                 return new File(new File(Paths.getEditionBasePath(), "Tools"),
    51                                 "xmlTools.exe");
     51                File toolsPath = CaseInsensitiveFile.getCaseInsensitiveFile(Paths.getEditionBasePath(), "Tools");
     52                return CaseInsensitiveFile.getCaseInsensitiveFile(toolsPath, "xmlTools.exe");
    5253        }
    5354}
  • AE/installer2/src/net/oni2/aeinstaller/backend/packages/Mod_Info.java

    r672 r699  
    99import java.util.HashSet;
    1010
     11import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
    1112import net.oni2.aeinstaller.backend.Paths;
    1213
     
    111112                                        }
    112113                                } else if (sName.equalsIgnoreCase("ExeName")) {
    113                                         exeFile = new File(Paths.getEditionBasePath(), sVal);
     114                                        exeFile = CaseInsensitiveFile.getCaseInsensitiveFile(Paths.getEditionBasePath(), sVal);
    114115                                } else if (sName.equalsIgnoreCase("ExeType")) {
    115116                                        if (sVal.equalsIgnoreCase("OSBinary"))
     
    122123                                        workingDir = sVal;
    123124                                } else if (sName.equalsIgnoreCase("IconName")) {
    124                                         iconFile = new File(Paths.getEditionBasePath(), sVal);
     125                                        iconFile = CaseInsensitiveFile.getCaseInsensitiveFile(Paths.getEditionBasePath(), sVal);
    125126                                }
    126127                        }
  • AE/installer2/src/net/oni2/aeinstaller/backend/packages/Package.java

    r672 r699  
    1414import org.apache.commons.io.FileUtils;
    1515
     16import net.oni2.aeinstaller.backend.CaseInsensitiveFile;
    1617import net.oni2.aeinstaller.backend.Paths;
    1718import net.oni2.aeinstaller.backend.Settings;
     
    105106         */
    106107        public void updateLocalData() {
    107                 File config = new File(getLocalPath(), "Mod_Info.cfg");
     108                File config = CaseInsensitiveFile.getCaseInsensitiveFile(getLocalPath(), "Mod_Info.cfg");
    108109                File aeicfg = new File(getLocalPath(), "aei.cfg");
    109                 File plain = new File(getLocalPath(), "plain");
     110                File plain = CaseInsensitiveFile.getCaseInsensitiveFile(getLocalPath(), "plain");
    110111                if (config.exists()) {
    111112                        Mod_Info mi = new Mod_Info(config, packageNumber);
Note: See TracChangeset for help on using the changeset viewer.