Ignore:
Timestamp:
Jan 19, 2013, 12:58:17 PM (12 years ago)
Author:
alloc
Message:

AEI2 0.92b:\n- Using zipped Depot cache

Location:
AE/installer2/src/net/oni2/aeinstaller/backend
Files:
3 added
3 deleted
3 edited

Legend:

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

    r633 r634  
    11package net.oni2.aeinstaller.backend.depot;
    22
     3import java.io.BufferedReader;
    34import java.io.FileInputStream;
    45import java.io.FileNotFoundException;
    56import java.io.FileOutputStream;
    67import java.io.IOException;
     8import java.io.InputStreamReader;
    79import java.io.UnsupportedEncodingException;
    810import java.net.UnknownHostException;
     11import java.util.Enumeration;
    912import java.util.HashMap;
    1013import java.util.HashSet;
    1114import java.util.Vector;
    12 
     15import java.util.zip.ZipEntry;
     16import java.util.zip.ZipFile;
     17
     18import net.oni2.aeinstaller.backend.Paths;
    1319import net.oni2.aeinstaller.backend.Settings;
    1420import net.oni2.aeinstaller.backend.Settings.Platform;
     
    2127import net.oni2.aeinstaller.backend.depot.model.TaxonomyVocabulary;
    2228import net.oni2.aeinstaller.backend.mods.ECompatiblePlatform;
    23 import net.oni2.aeinstaller.backend.network.DrupalJSONQuery;
     29import net.oni2.aeinstaller.backend.network.FileDownloader;
    2430
    2531import org.apache.http.HttpResponse;
     
    6470         * @param forceRefreshAll
    6571         *            Force refreshing all data, even if it seems to be cached
    66          * @param listener
    67          *            Listener for update status
    68          */
    69         public void updateInformation(boolean forceRefreshAll,
    70                         DepotCacheUpdateProgressListener listener) {
     72         */
     73        public void updateInformation(boolean forceRefreshAll) {
    7174                taxonomyTerms.clear();
    7275                taxonomyVocabulary.clear();
     
    7780
    7881                try {
    79                         JSONArray ja;
    80                         JSONObject jo;
    81 
    82                         ja = DrupalJSONQuery
    83                                         .executeQuery("http://mods.oni2.net/jsoncache/vocabulary.json");
    84                         for (int i = 0; i < ja.length(); i++) {
    85                                 jo = ja.getJSONObject(i);
    86                                 TaxonomyVocabulary tv = new TaxonomyVocabulary(jo);
    87                                 taxonomyVocabulary.put(tv.getVid(), tv);
     82                        java.io.File zipName = new java.io.File(Paths.getDownloadPath(),
     83                                        "jsoncache.zip");
     84                        FileDownloader fd = new FileDownloader(DepotConfig.getDepotUrl()
     85                                        + "jsoncache/jsoncache.zip", zipName);
     86                        fd.start();
     87                        while (fd.getState() != net.oni2.aeinstaller.backend.network.FileDownloader.EState.FINISHED) {
     88                                Thread.sleep(50);
    8889                        }
    8990
    90                         ja = DrupalJSONQuery
    91                                         .executeQuery("http://mods.oni2.net/jsoncache/terms.json");
    92                         for (int i = 0; i < ja.length(); i++) {
    93                                 jo = ja.getJSONObject(i);
    94                                 TaxonomyTerm tt = new TaxonomyTerm(jo);
    95                                 taxonomyTerms.put(tt.getTid(), tt);
    96                         }
    97 
    98                         ja = DrupalJSONQuery
    99                                         .executeQuery("http://mods.oni2.net/jsoncache/nodes.json");
    100                         for (int i = 0; i < ja.length(); i++) {
    101                                 jo = ja.getJSONObject(i);
    102 
    103                                 int nid = jo.getInt("nid");
    104                                 String type = jo.getString("type");
    105 
    106                                 Node n = null;
    107                                 if (type.equalsIgnoreCase(DepotConfig.getNodeType_Mod()))
    108                                         n = new NodeMod(jo);
    109                                 else
    110                                         n = new Node(jo);
    111 
    112                                 nodes.put(nid, n);
    113                                 if (!nodesByType.containsKey(type))
    114                                         nodesByType.put(type, new HashMap<Integer, Node>());
    115                                 nodesByType.get(type).put(nid, n);
    116                         }
    117 
    118                         ja = DrupalJSONQuery
    119                                         .executeQuery("http://mods.oni2.net/jsoncache/files.json");
    120                         for (int i = 0; i < ja.length(); i++) {
    121                                 jo = ja.getJSONObject(i);
    122 
    123                                 int fid = jo.getInt("fid");
    124 
    125                                 File f = new File(jo);
    126                                 files.put(fid, f);
     91                        ZipFile zf = null;
     92                        try {
     93                                zf = new ZipFile(zipName);
     94                                for (Enumeration<? extends ZipEntry> e = zf.entries(); e
     95                                                .hasMoreElements();) {
     96                                        ZipEntry ze = e.nextElement();
     97                                        if (!ze.isDirectory()) {
     98                                                BufferedReader input = new BufferedReader(
     99                                                                new InputStreamReader(zf.getInputStream(ze)));
     100                                                StringBuffer json = new StringBuffer();
     101
     102                                                char data[] = new char[1024];
     103                                                int dataRead;
     104                                                while ((dataRead = input.read(data, 0, 1024)) != -1) {
     105                                                        json.append(data, 0, dataRead);
     106                                                }
     107
     108                                                if (ze.getName().toLowerCase().contains("vocabulary"))
     109                                                        initVocabulary(new JSONArray(json.toString()));
     110                                                if (ze.getName().toLowerCase().contains("terms"))
     111                                                        initTerms(new JSONArray(json.toString()));
     112                                                if (ze.getName().toLowerCase().contains("nodes"))
     113                                                        initNodes(new JSONArray(json.toString()));
     114                                                if (ze.getName().toLowerCase().contains("files"))
     115                                                        initFiles(new JSONArray(json.toString()));
     116                                        }
     117                                }
     118                        } finally {
     119                                if (zf != null)
     120                                        zf.close();
     121                                zipName.delete();
    127122                        }
    128123
     
    135130                } catch (JSONException e) {
    136131                        e.printStackTrace();
    137                 } catch (Exception e) {
    138                         System.err.println(e.getMessage());
    139                         e.printStackTrace();
     132                } catch (IOException e1) {
     133                        e1.printStackTrace();
     134                } catch (InterruptedException e) {
     135                        e.printStackTrace();
     136                }
     137        }
     138
     139        private void initFiles(JSONArray ja) throws JSONException {
     140                JSONObject jo;
     141
     142                for (int i = 0; i < ja.length(); i++) {
     143                        jo = ja.getJSONObject(i);
     144
     145                        int fid = jo.getInt("fid");
     146
     147                        File f = new File(jo);
     148                        files.put(fid, f);
     149                }
     150        }
     151
     152        private void initNodes(JSONArray ja) throws JSONException {
     153                JSONObject jo;
     154
     155                for (int i = 0; i < ja.length(); i++) {
     156                        jo = ja.getJSONObject(i);
     157
     158                        int nid = jo.getInt("nid");
     159                        String type = jo.getString("type");
     160
     161                        Node n = null;
     162                        if (type.equalsIgnoreCase(DepotConfig.getNodeType_Mod()))
     163                                n = new NodeMod(jo);
     164                        else
     165                                n = new Node(jo);
     166
     167                        nodes.put(nid, n);
     168                        if (!nodesByType.containsKey(type))
     169                                nodesByType.put(type, new HashMap<Integer, Node>());
     170                        nodesByType.get(type).put(nid, n);
     171                }
     172        }
     173
     174        private void initTerms(JSONArray ja) throws JSONException {
     175                JSONObject jo;
     176
     177                for (int i = 0; i < ja.length(); i++) {
     178                        jo = ja.getJSONObject(i);
     179                        TaxonomyTerm tt = new TaxonomyTerm(jo);
     180                        taxonomyTerms.put(tt.getTid(), tt);
     181                }
     182        }
     183
     184        private void initVocabulary(JSONArray ja) throws JSONException {
     185                JSONObject jo;
     186
     187                for (int i = 0; i < ja.length(); i++) {
     188                        jo = ja.getJSONObject(i);
     189                        TaxonomyVocabulary tv = new TaxonomyVocabulary(jo);
     190                        taxonomyVocabulary.put(tv.getVid(), tv);
    140191                }
    141192        }
  • AE/installer2/src/net/oni2/aeinstaller/backend/mods/download/ModDownload.java

    r624 r634  
    88import net.oni2.aeinstaller.backend.Paths;
    99import net.oni2.aeinstaller.backend.mods.Mod;
     10import net.oni2.aeinstaller.backend.mods.unpack.UnpackListener;
     11import net.oni2.aeinstaller.backend.mods.unpack.Unpacker;
    1012import net.oni2.aeinstaller.backend.network.FileDownloadListener;
    1113import net.oni2.aeinstaller.backend.network.FileDownloader;
    1214import net.oni2.aeinstaller.backend.network.FileDownloader.EState;
    13 import net.oni2.aeinstaller.backend.unpack.UnpackListener;
    14 import net.oni2.aeinstaller.backend.unpack.Unpacker;
    1515
    1616/**
     
    7575                try {
    7676                        downloader = new FileDownloader(mod.getFile().getUri_full(),
    77                                         zipFile.getPath());
     77                                        zipFile);
    7878                        downloader.addListener(this);
    7979                        unpacker = new Unpacker(zipFile, targetFolder, this);
     
    166166        @Override
    167167        public void statusUpdate(Unpacker source,
    168                         net.oni2.aeinstaller.backend.unpack.Unpacker.EState state) {
     168                        net.oni2.aeinstaller.backend.mods.unpack.Unpacker.EState state) {
    169169                switch (state) {
    170170                        case INIT:
  • AE/installer2/src/net/oni2/aeinstaller/backend/network/FileDownloader.java

    r619 r634  
    6161         *             If url could not be opened
    6262         */
    63         public FileDownloader(String url, String target) throws IOException {
     63        public FileDownloader(String url, File target) throws IOException {
    6464                this.url = new URL(url);
    65                 this.target = new File(target);
     65                this.target = target;
    6666
    6767                URLConnection connection = this.url.openConnection();
     
    130130                                target.delete();
    131131                }
     132        }
     133
     134        /**
     135         * @return current state
     136         */
     137        public EState getState() {
     138                return state;
    132139        }
    133140
Note: See TracChangeset for help on using the changeset viewer.