Changeset 602 for AE/installer2/src


Ignore:
Timestamp:
Jan 10, 2013, 4:39:53 PM (12 years ago)
Author:
alloc
Message:

AEI2

Location:
AE/installer2/src/net/oni2/aeinstaller
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller.properties

    r600 r602  
    11appname=AE Installer 2
    2 appversion=0.50
     2appversion=0.55
    33
    44invalidPath.title=Wrong directory
  • AE/installer2/src/net/oni2/aeinstaller/AEInstaller2.java

    r600 r602  
    132132                System.out.println("Architect: " + Settings.getArchitecture());
    133133                System.out.println(".NET:      " + OniSplit.isDotNETInstalled());
     134                System.out.println("OniSplit:  " + OniSplit.isOniSplitInstalled());
    134135                System.out.println("Globalized:" + Installer.isEditionInitialized());
    135136
  • AE/installer2/src/net/oni2/aeinstaller/backend/Paths.java

    r598 r602  
    1616         */
    1717        public static File getInstallerPath() {
    18                 String jarPath = Settings.class.getProtectionDomain().getCodeSource()
    19                                 .getLocation().getPath();
    20                 String decodedPath = null;
    21                 try {
    22                         decodedPath = URLDecoder.decode(jarPath, "UTF-8");
    23                 } catch (UnsupportedEncodingException e) {
    24                         e.printStackTrace();
    25                 }
    26                 return new File(decodedPath).getParentFile();
     18//              String jarPath = Settings.class.getProtectionDomain().getCodeSource()
     19//                              .getLocation().getPath();
     20//              String decodedPath = null;
     21//              try {
     22//                      decodedPath = URLDecoder.decode(jarPath, "UTF-8");
     23//              } catch (UnsupportedEncodingException e) {
     24//                      e.printStackTrace();
     25//              }
     26//              return new File(decodedPath).getParentFile();
     27                String wd = System.getProperty("user.dir");
     28                return new File(wd);
    2729        }
    2830
  • AE/installer2/src/net/oni2/aeinstaller/backend/depot/DepotConfig.java

    r592 r602  
    6161                return "Package";
    6262        }
     63       
     64        /**
     65         * @return Taxonomy term name for modtype Tool
     66         */
     67        public static String getTaxonomyName_ModType_Tool() {
     68                return "Tool";
     69        }
    6370}
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/Mod.java

    r600 r602  
    1313import net.oni2.aeinstaller.backend.Settings;
    1414import net.oni2.aeinstaller.backend.Settings.Platform;
     15import net.oni2.aeinstaller.backend.depot.DepotConfig;
    1516import net.oni2.aeinstaller.backend.depot.DepotManager;
    1617import net.oni2.aeinstaller.backend.depot.model.NodeMod;
     
    2223public class Mod implements Comparable<Mod> {
    2324        // TODO: Dependencies/Conflicts
    24        
     25
    2526        private String name = "";
    2627        private int packageNumber = 0;
     
    3738        private net.oni2.aeinstaller.backend.depot.model.File file = null;
    3839
     40        private HashSet<Integer> conflicts = new HashSet<Integer>();
     41        private HashSet<Integer> dependencies = new HashSet<Integer>();
     42
    3943        private long localTimestamp = 0;
    4044
     
    5256                        Type t = ModManager.getInstance().getTypeByName(tt.getName());
    5357                        types.add(t);
    54                         t.addEntry(this);
     58                        if (!t.getName().equals(DepotConfig.getTaxonomyName_ModType_Tool()))
     59                                t.addEntry(this);
    5560                }
    5661                platform = nm.getPlatform();
     
    268273         * @return Is a mod that is always installed?
    269274         */
    270         public boolean isDefaultMod() {
     275        public boolean isMandatoryMod() {
    271276                return packageNumber < 10000;
    272277        }
     
    282287        public String toString() {
    283288                return name;
     289        }
     290
     291        /**
     292         * @return the conflicts
     293         */
     294        public HashSet<Integer> getConflicts() {
     295                return conflicts;
     296        }
     297
     298        /**
     299         * @return the dependencies
     300         */
     301        public HashSet<Integer> getDependencies() {
     302                return dependencies;
    284303        }
    285304
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/ModManager.java

    r600 r602  
    55import java.util.Collection;
    66import java.util.HashMap;
     7import java.util.HashSet;
     8import java.util.TreeSet;
    79import java.util.Vector;
    810
    911import net.oni2.aeinstaller.backend.Paths;
     12import net.oni2.aeinstaller.backend.depot.DepotConfig;
    1013import net.oni2.aeinstaller.backend.depot.DepotManager;
    1114import net.oni2.aeinstaller.backend.depot.model.NodeMod;
     
    2326        private HashMap<String, Type> types = new HashMap<String, Type>();
    2427        private HashMap<Integer, Mod> mods = new HashMap<Integer, Mod>();
     28        private HashMap<Integer, Mod> tools = new HashMap<Integer, Mod>();
    2529
    2630        /**
     
    5256                }
    5357
     58                TaxonomyTerm toolTerm = DepotManager.getInstance().getTaxonomyTerm(
     59                                DepotConfig.getTaxonomyName_ModType_Tool());
    5460                for (NodeMod nm : DepotManager.getInstance().getModPackageNodes()) {
    5561                        if (nm.getUploads().size() == 1) {
    5662                                Mod m = new Mod(nm);
    57                                 mods.put(m.getPackageNumber(), m);
     63                                if (nm.getTypes().contains(toolTerm))
     64                                        tools.put(m.getPackageNumber(), m);
     65                                else
     66                                        mods.put(m.getPackageNumber(), m);
    5867                                modFolders.remove(m.getPackageNumber());
    5968                        }
     
    102111         * @return Mods which are always installed
    103112         */
    104         public Collection<Mod> getDefaultMods() {
     113        public Collection<Mod> getMandatoryMods() {
    105114                Vector<Mod> res = new Vector<Mod>();
    106115                for (Mod m : mods.values()) {
    107                         if (m.isDefaultMod())
     116                        if (m.isMandatoryMod())
    108117                                res.add(m);
    109118                }
    110119                return res;
    111120        }
     121       
     122        /**
     123         * @return Collection of tools
     124         */
     125        public Collection<Mod> getTools() {
     126                return tools.values();
     127        }
     128       
     129        /**
     130         * @return Tools which are always installed
     131         */
     132        public Collection<Mod> getMandatoryTools() {
     133                Vector<Mod> res = new Vector<Mod>();
     134                for (Mod m : tools.values()) {
     135                        if (m.isMandatoryMod())
     136                                res.add(m);
     137                }
     138                return res;
     139        }
     140
     141        /**
     142         * Get a mod by its package number
     143         *
     144         * @param number
     145         *            Package number
     146         * @return Mod or null
     147         */
     148        public Mod getModByNumber(int number) {
     149                for (Mod m : mods.values()) {
     150                        if (m.getPackageNumber() == number)
     151                                return m;
     152                }
     153                return null;
     154        }
     155
     156        /**
     157         * Check for unresolved dependencies within the given mods
     158         *
     159         * @param mods
     160         *            Mods to check
     161         * @return Unmet dependencies
     162         */
     163        public HashMap<Mod, HashSet<Mod>> checkDependencies(TreeSet<Mod> mods) {
     164                // TODO: Verify functionality
     165                HashMap<Mod, HashSet<Mod>> res = new HashMap<Mod, HashSet<Mod>>();
     166
     167                for (Mod m : mods) {
     168                        for (int depNum : m.getDependencies()) {
     169                                Mod other = getModByNumber(depNum);
     170                                if (!mods.contains(other)) {
     171                                        if (!res.containsKey(m))
     172                                                res.put(m, new HashSet<Mod>());
     173                                        res.get(m).add(other);
     174                                }
     175                        }
     176                }
     177
     178                return res;
     179        }
     180
     181        /**
     182         * Check for conflicts between given mods
     183         *
     184         * @param mods
     185         *            Mods to check
     186         * @return Conflicting mods
     187         */
     188        public HashMap<Mod, HashSet<Mod>> checkConflicts(TreeSet<Mod> mods) {
     189                // TODO: Verify functionality
     190                HashMap<Mod, HashSet<Mod>> res = new HashMap<Mod, HashSet<Mod>>();
     191
     192                for (Mod m : mods) {
     193                        for (int confNum : m.getConflicts()) {
     194                                Mod other = getModByNumber(confNum);
     195                                if (mods.contains(other)) {
     196                                        if (!res.containsKey(m))
     197                                                res.put(m, new HashSet<Mod>());
     198                                        res.get(m).add(other);
     199                                }
     200                        }
     201                }
     202
     203                return res;
     204        }
     205
    112206}
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/Installer.java

    r600 r602  
    3939        }
    4040
     41        /**
     42         * Install the given set of mods
     43         *
     44         * @param mods
     45         *            Mods to install
     46         * @param listener
     47         *            Listener for install progress updates
     48         */
    4149        public static void install(TreeSet<Mod> mods,
    4250                        InstallProgressListener listener) {
    43 
    4451                Vector<File> folders = new Vector<File>();
    4552                folders.add(Paths.getVanillaOnisPath());
     
    6572                }
    6673
    67                 // for (File f : Paths.getModsPath().listFiles()) {
    68                 // File oni = new File(f, "oni");
    69                 // if (oni.exists())
    70                 // folders.add(oni);
    71                 // }
    7274                combineBinaryFiles(folders, listener);
    7375
     
    140142                                log.println();
    141143                        }
    142                        
     144
    143145                        Date end = new Date();
    144146                        log.println("Initialization ended at " + sdf.format(end));
  • AE/installer2/src/net/oni2/aeinstaller/backend/oni/OniSplit.java

    r600 r602  
    7777
    7878        /**
     79         * @return Is Onisplit installed?
     80         */
     81        public static boolean isOniSplitInstalled() {
     82                return getProgramFile().exists();
     83        }
     84
     85        /**
    7986         * Export given dat-file to target folder
    8087         *
     
    112119         * @return OniSplit output
    113120         */
    114         public static Vector<String> importLevel(Vector<File> sourceFolders, File targetFile) {
     121        public static Vector<String> importLevel(Vector<File> sourceFolders,
     122                        File targetFile) {
    115123                Vector<String> cmdLine = getProgramInvocation();
    116124                cmdLine.add(getImportParam());
     
    212220                if (Settings.getPlatform() != Platform.WIN)
    213221                        res.add("mono");
    214                 res.add(new File(new File(Paths.getEditionBasePath(), "Tools"),
    215                                 "Onisplit.exe").getPath());
    216                 return res;
     222                res.add(getProgramFile().getPath());
     223                return res;
     224        }
     225
     226        private static File getProgramFile() {
     227                return new File(new File(Paths.getEditionBasePath(), "Tools"),
     228                                "Onisplit.exe");
    217229        }
    218230}
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.java

    r600 r602  
    264264        }
    265265
     266        @DoInBackground(progressMessage = "mandatoryFiles.title", cancelable = false, indeterminateProgress = false)
     267        private void checkMandatoryFiles(final BackgroundEvent evt) {
     268                System.out.println("Tools:");
     269                for (Mod m : ModManager.getInstance().getTools()) {
     270                        System.out.format("  %05d %s", m.getPackageNumber(), m.getName());
     271                }
     272                System.out.println();
     273               
     274                System.out.println("Mandatory tools:");
     275                for (Mod m : ModManager.getInstance().getMandatoryTools()) {
     276                        System.out.format("  %05d %s", m.getPackageNumber(), m.getName());
     277                }
     278        }
     279
    266280        @DoInBackground(progressMessage = "installing.title", cancelable = false, indeterminateProgress = false)
    267281        private void install(final BackgroundEvent evt) {
     282                // TODO: Conflicts/Dependencies
     283
    268284                TreeSet<Mod> mods = new TreeSet<Mod>();
    269                 mods.addAll(ModManager.getInstance().getDefaultMods());
     285                mods.addAll(ModManager.getInstance().getMandatoryMods());
    270286                mods.addAll(model.getSelectedMods());
    271287
     
    284300                        }
    285301                });
    286 
    287                 // TODO method stub
    288                 JOptionPane.showMessageDialog(this, "install", "todo",
    289                                 JOptionPane.INFORMATION_MESSAGE);
    290302        }
    291303
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.properties

    r600 r602  
    4646initializingEdition.title=Initializing Edition core
    4747installing.title=Installing mods
     48mandatoryFiles.title=Checking for mandatory files
  • AE/installer2/src/net/oni2/aeinstaller/gui/MainWin.yml

    r600 r602  
    66  locationRelativeTo: null
    77  defaultCloseOperation: doNothingOnClose
    8   onWindowOpened: [execDepotUpdate,checkUpdates,initialize,focus]
     8  onWindowOpened: [execDepotUpdate,checkMandatoryFiles,initialize,checkUpdates,focus]
    99  onWindowClosing: [askClose,saveLocalData,exit]
    1010  iconImage: img.ae
  • AE/installer2/src/net/oni2/aeinstaller/gui/modtable/ModTableFilter.java

    r600 r602  
    2626                Mod mod = (Mod) entry.getModel().getValueAt(entry.getIdentifier(), -1);
    2727
    28                 if (mod.isDefaultMod())
     28                if (mod.isMandatoryMod())
    2929                        return false;
    3030
Note: See TracChangeset for help on using the changeset viewer.