Ignore:
Timestamp:
Jan 19, 2013, 4:04:27 PM (12 years ago)
Author:
alloc
Message:

AEI2:

  • Refactorings
Location:
AE/installer2/src/net/oni2/aeinstaller/backend/depot
Files:
2 edited

Legend:

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

    r634 r635  
    1111import java.util.Enumeration;
    1212import java.util.HashMap;
    13 import java.util.HashSet;
    1413import java.util.Vector;
    1514import java.util.zip.ZipEntry;
     
    1817import net.oni2.aeinstaller.backend.Paths;
    1918import net.oni2.aeinstaller.backend.Settings;
    20 import net.oni2.aeinstaller.backend.Settings.Platform;
    2119import net.oni2.aeinstaller.backend.depot.model.File;
    2220import net.oni2.aeinstaller.backend.depot.model.Node;
     
    2624import net.oni2.aeinstaller.backend.depot.model.TaxonomyTerm;
    2725import net.oni2.aeinstaller.backend.depot.model.TaxonomyVocabulary;
    28 import net.oni2.aeinstaller.backend.mods.ECompatiblePlatform;
    2926import net.oni2.aeinstaller.backend.network.FileDownloader;
    3027
     
    4441 */
    4542public class DepotManager {
    46         private static DepotManager instance = new DepotManager();
     43        private static DepotManager instance = loadFromFile();
    4744
    4845        private HashMap<Integer, TaxonomyVocabulary> taxonomyVocabulary = new HashMap<Integer, TaxonomyVocabulary>();
     
    7269         */
    7370        public void updateInformation(boolean forceRefreshAll) {
    74                 taxonomyTerms.clear();
    75                 taxonomyVocabulary.clear();
    76 
    77                 nodes = new HashMap<Integer, Node>();
    78                 nodesByType = new HashMap<String, HashMap<Integer, Node>>();
    79                 files = new HashMap<Integer, File>();
    80 
    8171                try {
    8272                        java.io.File zipName = new java.io.File(Paths.getDownloadPath(),
     
    10696                                                }
    10797
    108                                                 if (ze.getName().toLowerCase().contains("vocabulary"))
     98                                                if (ze.getName().toLowerCase().contains("vocabulary")) {
    10999                                                        initVocabulary(new JSONArray(json.toString()));
    110                                                 if (ze.getName().toLowerCase().contains("terms"))
     100                                                }
     101                                                if (ze.getName().toLowerCase().contains("terms")) {
    111102                                                        initTerms(new JSONArray(json.toString()));
    112                                                 if (ze.getName().toLowerCase().contains("nodes"))
     103                                                }
     104                                                if (ze.getName().toLowerCase().contains("nodes")) {
    113105                                                        initNodes(new JSONArray(json.toString()));
    114                                                 if (ze.getName().toLowerCase().contains("files"))
     106                                                }
     107                                                if (ze.getName().toLowerCase().contains("files")) {
    115108                                                        initFiles(new JSONArray(json.toString()));
     109                                                }
    116110                                        }
    117111                                }
     
    128122                        vocabId_instmethod = getVocabulary(
    129123                                        DepotConfig.getVocabularyName_InstallType()).getVid();
     124
     125                        saveToFile();
    130126                } catch (JSONException e) {
    131127                        e.printStackTrace();
     
    138134
    139135        private void initFiles(JSONArray ja) throws JSONException {
     136                files = new HashMap<Integer, File>();
    140137                JSONObject jo;
    141 
    142138                for (int i = 0; i < ja.length(); i++) {
    143139                        jo = ja.getJSONObject(i);
    144 
    145140                        int fid = jo.getInt("fid");
    146141
     
    151146
    152147        private void initNodes(JSONArray ja) throws JSONException {
     148                nodes = new HashMap<Integer, Node>();
     149                nodesByType = new HashMap<String, HashMap<Integer, Node>>();
    153150                JSONObject jo;
    154 
    155151                for (int i = 0; i < ja.length(); i++) {
    156152                        jo = ja.getJSONObject(i);
     
    173169
    174170        private void initTerms(JSONArray ja) throws JSONException {
     171                taxonomyTerms.clear();
    175172                JSONObject jo;
    176 
    177173                for (int i = 0; i < ja.length(); i++) {
    178174                        jo = ja.getJSONObject(i);
     
    183179
    184180        private void initVocabulary(JSONArray ja) throws JSONException {
     181                taxonomyVocabulary.clear();
    185182                JSONObject jo;
    186 
    187183                for (int i = 0; i < ja.length(); i++) {
    188184                        jo = ja.getJSONObject(i);
     
    218214                return false;
    219215        }
    220 
    221         /**
    222          * @return All TaxVocabs
    223          */
    224         public Vector<TaxonomyVocabulary> getVocabulary() {
    225                 return new Vector<TaxonomyVocabulary>(taxonomyVocabulary.values());
    226         }
    227 
    228         /**
    229          * @param id
    230          *            Get taxonomy vocabulary by given ID
    231          * @return TaxVocab
    232          */
    233         public TaxonomyVocabulary getVocabulary(int id) {
    234                 return taxonomyVocabulary.get(id);
    235         }
    236 
    237         /**
    238          * @param name
    239          *            Get taxonomy vocabulary by given name
    240          * @return TaxVocab
    241          */
    242         public TaxonomyVocabulary getVocabulary(String name) {
     216       
     217        private TaxonomyVocabulary getVocabulary(String name) {
    243218                for (TaxonomyVocabulary v : taxonomyVocabulary.values()) {
    244219                        if (v.getName().equalsIgnoreCase(name))
     
    253228         * @return TaxTerms
    254229         */
    255         public Vector<TaxonomyTerm> getTaxonomyTermsByVocabulary(int vocabId) {
     230        private Vector<TaxonomyTerm> getTaxonomyTermsByVocabulary(int vocabId) {
    256231                Vector<TaxonomyTerm> res = new Vector<TaxonomyTerm>();
    257232                for (TaxonomyTerm t : taxonomyTerms.values()) {
     
    263238
    264239        /**
     240         * @return All defined types
     241         */
     242        public Vector<TaxonomyTerm> getTypes() {
     243                return getTaxonomyTermsByVocabulary(getVocabIdType());
     244        }
     245
     246        /**
    265247         * @param id
    266248         *            Get taxonomy term by given ID
     
    269251        public TaxonomyTerm getTaxonomyTerm(int id) {
    270252                return taxonomyTerms.get(id);
    271         }
    272 
    273         /**
    274          * @param name
    275          *            Get taxonomy term by given name
    276          * @return TaxTerm
    277          */
    278         public TaxonomyTerm getTaxonomyTerm(String name) {
    279                 for (TaxonomyTerm t : taxonomyTerms.values()) {
    280                         if (t.getName().equalsIgnoreCase(name))
    281                                 return t;
    282                 }
    283                 return null;
    284253        }
    285254
     
    293262        public Vector<Node> getNodesByType(String nodeType) {
    294263                return new Vector<Node>(nodesByType.get(nodeType).values());
    295         }
    296 
    297         /**
    298          * Get a node by node id
    299          *
    300          * @param id
    301          *            Node id
    302          * @return Node
    303          */
    304         public Node getNodeById(int id) {
    305                 return nodes.get(id);
    306         }
    307 
    308         /**
    309          * Get a Mod-Node by a given package number
    310          *
    311          * @param packageNumber
    312          *            Package number to find
    313          * @return The Mod-Node or null
    314          */
    315         public NodeMod getNodeByPackageNumber(int packageNumber) {
    316                 Vector<Node> files = getNodesByType(DepotConfig.getNodeType_Mod());
    317                 for (Node n : files) {
    318                         if (n instanceof NodeMod) {
    319                                 NodeMod nm = (NodeMod) n;
    320                                 if (nm.getPackageNumber() == packageNumber)
    321                                         return nm;
    322                         }
    323                 }
    324                 return null;
    325264        }
    326265
     
    345284
    346285        /**
    347          * @param node
    348          *            Node to check validity on
    349          * @param platform
    350          *            Platform to check against
    351          * @return True if valid on platform
    352          */
    353         public boolean isModValidOnPlatform(NodeMod node, Settings.Platform platform) {
    354                 ECompatiblePlatform plat = node.getPlatform();
    355                 switch (plat) {
    356                         case BOTH:
    357                                 return true;
    358                         case WIN:
    359                                 return (platform == Platform.WIN)
    360                                                 || (platform == Platform.LINUX);
    361                         case MACOS:
    362                                 return (platform == Platform.MACOS);
    363                 }
    364                 return false;
    365         }
    366 
    367         /**
    368          * Checks if the given mod-node is of the given mod-type(s)
    369          *
    370          * @param node
    371          *            Node to check
    372          * @param type
    373          *            Type(s) to check
    374          * @param or
    375          *            If false check if all given types are included in node. If
    376          *            true checks if either of the given types is included.
    377          * @return True if of given type(s)
    378          */
    379         public boolean isModOfType(NodeMod node, HashSet<Integer> type, boolean or) {
    380                 boolean matching = !or;
    381                 HashSet<TaxonomyTerm> terms = node.getTypes();
    382 
    383                 for (int t : type) {
    384                         if (or)
    385                                 matching |= terms.contains(t);
    386                         else
    387                                 matching &= terms.contains(t);
    388                 }
    389                 return matching;
    390         }
    391 
    392         /**
    393286         * @return VocabId of Platform vocabulary
    394287         */
     
    432325        }
    433326
    434         private XStream getXStream() {
     327        private static XStream getXStream() {
    435328                XStream xs = new XStream(new StaxDriver());
    436329                xs.alias("Depot", DepotManager.class);
     
    447340        /**
    448341         * Save Depot cache instance to file
    449          *
    450          * @param f
    451          *            File to write to
    452          */
    453         public void saveToFile(java.io.File f) {
     342         */
     343        private void saveToFile() {
    454344                try {
    455                         FileOutputStream fos = new FileOutputStream(f);
     345                        FileOutputStream fos = new FileOutputStream(
     346                                        Settings.getDepotCacheFilename());
    456347                        XStream xs = getXStream();
    457348                        xs.toXML(this, fos);
     
    464355        }
    465356
    466         /**
    467          * Load Depot cache instance from file
    468          *
    469          * @param f
    470          *            File to read from
    471          */
    472         public void loadFromFile(java.io.File f) {
     357        private static DepotManager loadFromFile() {
    473358                try {
    474                         FileInputStream fis = new FileInputStream(f);
     359                        FileInputStream fis = new FileInputStream(
     360                                        Settings.getDepotCacheFilename());
    475361                        XStream xs = getXStream();
    476362                        Object obj = xs.fromXML(fis);
     363                        fis.close();
    477364                        if (obj instanceof DepotManager)
    478                                 instance = (DepotManager) obj;
    479                         fis.close();
     365                                return (DepotManager) obj;
    480366                } catch (FileNotFoundException e) {
    481367                } catch (IOException e) {
    482368                }
     369                return new DepotManager();
    483370        }
    484371}
  • AE/installer2/src/net/oni2/aeinstaller/backend/depot/model/NodeMod.java

    r626 r635  
    1818public class NodeMod extends Node {
    1919        private Vector<NodeField_Upload> uploads = new Vector<NodeField_Upload>();
    20         private HashMap<Integer, HashSet<Integer>> taxonomyTerms = new HashMap<Integer, HashSet<Integer>>();
     20        private HashMap<Integer, HashSet<TaxonomyTerm>> taxonomyTerms = new HashMap<Integer, HashSet<TaxonomyTerm>>();
    2121        private HashMap<String, String> fields = new HashMap<String, String>();
    2222
     
    5858                                int vid = Integer
    5959                                                .parseInt(keyS.substring(keyS.lastIndexOf("_") + 1));
    60                                 HashSet<Integer> values = new HashSet<Integer>();
     60                                HashSet<TaxonomyTerm> values = new HashSet<TaxonomyTerm>();
    6161                                if (val instanceof JSONObject) {
    6262                                        JSONArray ja = ((JSONObject) val).getJSONArray("und");
    6363                                        for (int i = 0; i < ja.length(); i++) {
    64                                                 values.add(ja.getJSONObject(i).getInt("tid"));
     64                                                values.add(DepotManager.getInstance().getTaxonomyTerm(
     65                                                                ja.getJSONObject(i).getInt("tid")));
    6566                                        }
    6667                                }
     
    8182         */
    8283        public HashSet<TaxonomyTerm> getTypes() {
    83                 HashSet<TaxonomyTerm> tt = new HashSet<TaxonomyTerm>();
    84                 for (int t : taxonomyTerms.get(DepotManager.getInstance()
    85                                 .getVocabIdType())) {
    86                         tt.add(DepotManager.getInstance().getTaxonomyTerm(t));
    87                 }
    88                 return tt;
     84                return taxonomyTerms.get(DepotManager.getInstance().getVocabIdType());
    8985        }
    9086
     
    9389         */
    9490        public TaxonomyTerm getInstallMethod() {
    95                 return DepotManager.getInstance().getTaxonomyTerm(
    96                                 taxonomyTerms
    97                                                 .get(DepotManager.getInstance().getVocabIdInstMethod())
    98                                                 .iterator().next());
     91                return taxonomyTerms
     92                                .get(DepotManager.getInstance().getVocabIdInstMethod())
     93                                .iterator().next();
    9994        }
    10095
     
    10398         */
    10499        public ECompatiblePlatform getPlatform() {
    105                 TaxonomyTerm term = DepotManager.getInstance().getTaxonomyTerm(
    106                                 taxonomyTerms
    107                                                 .get(DepotManager.getInstance().getVocabIdPlatform())
    108                                                 .iterator().next());
     100                TaxonomyTerm term = taxonomyTerms
     101                                .get(DepotManager.getInstance().getVocabIdPlatform())
     102                                .iterator().next();
    109103
    110104                String validPlatform = term.getName();
     
    155149                HashSet<TaxonomyTerm> types = getTypes();
    156150                for (String s : DepotConfig.getTaxonomyName_ModType_Tool()) {
    157                         TaxonomyTerm tt = DepotManager.getInstance().getTaxonomyTerm(s);
    158                         if (types.contains(tt))
    159                                 return true;
     151                        for (TaxonomyTerm tt : types)
     152                                if (tt.getName().equalsIgnoreCase(s))
     153                                        return true;
    160154                }
    161155                return false;
Note: See TracChangeset for help on using the changeset viewer.