home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 2004 May / DPPCPRO0504.ISO / May / Seatools / SeaTools.iso / tools / en / webhelp / webhelp.cab / XMLConsumer / Idx.class (.txt) < prev    next >
Encoding:
Java Class File  |  2002-04-17  |  2.4 KB  |  145 lines

  1. package XMLConsumer;
  2.  
  3. import BsscXML.IBsscXMLElementReader;
  4. import hhapplet.IChunkedData;
  5. import hhapplet.IChunkedInfo;
  6. import hhapplet.Language;
  7. import hhapplet.URLFileHandler;
  8. import java.net.MalformedURLException;
  9. import java.net.URL;
  10. import java.util.Vector;
  11.  
  12. public class Idx extends Consumer implements IChunkedInfo {
  13.    private URL m_projURL = null;
  14.    private Vector m_vChunkedIndex = null;
  15.    private int m_num = 0;
  16.  
  17.    public IChunkedData getChunkByIdx(int var1) {
  18.       IdxData var2 = null;
  19.       if (this.m_vChunkedIndex != null) {
  20.          int var3 = this.m_vChunkedIndex.size();
  21.          if (var3 > 0) {
  22.             int var4 = 0;
  23.             int var5 = var3 - 1;
  24.             boolean var6 = false;
  25.  
  26.             do {
  27.                int var7 = var4 + var5 >> 1;
  28.                if (var1 < ((IdxData)this.m_vChunkedIndex.elementAt(var7)).getLastIndex()) {
  29.                   var6 = true;
  30.                   var5 = var7;
  31.                } else {
  32.                   var4 = var7 + 1;
  33.                }
  34.             } while(var5 > var4);
  35.  
  36.             if (var6) {
  37.                var2 = (IdxData)this.m_vChunkedIndex.elementAt(var5);
  38.             } else if (var1 < ((IdxData)this.m_vChunkedIndex.elementAt(var4)).getLastIndex()) {
  39.                var2 = (IdxData)this.m_vChunkedIndex.elementAt(var4);
  40.             }
  41.          }
  42.       }
  43.  
  44.       return var2;
  45.    }
  46.  
  47.    public Idx(URL var1, URL var2) {
  48.       super(var1);
  49.       this.m_projURL = var2;
  50.       this.m_vChunkedIndex = new Vector();
  51.    }
  52.  
  53.    public void consume(IBsscXMLElementReader var1) {
  54.       if (var1.getName().equals("index")) {
  55.          int var2 = 0;
  56.  
  57.          while(true) {
  58.             IBsscXMLElementReader var3 = var1.getChild(var2++);
  59.             if (var3 == null) {
  60.                break;
  61.             }
  62.  
  63.             if (var3.getName().equals("chunkinfo")) {
  64.                String var4 = var3.getAttribute("url");
  65.                String var5 = var3.getAttribute("first");
  66.                String var6 = var3.getAttribute("last");
  67.                String var7 = var3.getAttribute("num");
  68.                if (var4 != null && var5 != null && var6 != null && var7 != null) {
  69.                   int var8 = 0;
  70.  
  71.                   try {
  72.                      var8 = Integer.parseInt(var7);
  73.                      this.m_num += var8;
  74.                   } catch (NumberFormatException var11) {
  75.                      ((Throwable)var11).printStackTrace();
  76.                   }
  77.  
  78.                   try {
  79.                      URL var9 = URLFileHandler.makeURL(((Consumer)this).getURL(), var4, (String)null);
  80.                      this.m_vChunkedIndex.addElement(new IdxData(var9, this.m_projURL, var5, var6, var8, this.m_num));
  81.                   } catch (MalformedURLException var10) {
  82.                      ((Throwable)var10).printStackTrace();
  83.                   }
  84.                }
  85.             }
  86.          }
  87.       }
  88.  
  89.    }
  90.  
  91.    public IChunkedData getChunkedData(boolean var1, String var2) {
  92.       IdxData var3 = null;
  93.       if (this.m_vChunkedIndex != null) {
  94.          int var4 = this.m_vChunkedIndex.size();
  95.          if (var4 > 0) {
  96.             int var5 = 0;
  97.             int var6 = var4 - 1;
  98.             boolean var7 = false;
  99.  
  100.             do {
  101.                int var8 = var5 + var6 + (var1 ? 0 : 1) >> 1;
  102.                IdxData var9 = (IdxData)this.m_vChunkedIndex.elementAt(var8);
  103.                if (var9 == null) {
  104.                   return null;
  105.                }
  106.  
  107.                if (var1) {
  108.                   if (Language.compare(var2, var9.getLast()) < 0) {
  109.                      var7 = true;
  110.                      var6 = var8;
  111.                   } else {
  112.                      var5 = var8 + 1;
  113.                   }
  114.                } else if (Language.compare(var2, var9.getFirst()) > 0) {
  115.                   var7 = true;
  116.                   var5 = var8;
  117.                } else {
  118.                   var6 = var8 - 1;
  119.                }
  120.             } while(var6 > var5);
  121.  
  122.             if (var7) {
  123.                if (var1) {
  124.                   var3 = (IdxData)this.m_vChunkedIndex.elementAt(var6);
  125.                } else {
  126.                   var3 = (IdxData)this.m_vChunkedIndex.elementAt(var5);
  127.                }
  128.             } else if (var1) {
  129.                if (var5 < var4 && Language.compare(var2, ((IdxData)this.m_vChunkedIndex.elementAt(var5)).getLast()) < 0) {
  130.                   var3 = (IdxData)this.m_vChunkedIndex.elementAt(var5);
  131.                }
  132.             } else if (var6 >= 0 && Language.compare(var2, ((IdxData)this.m_vChunkedIndex.elementAt(var6)).getFirst()) > 0) {
  133.                var3 = (IdxData)this.m_vChunkedIndex.elementAt(var6);
  134.             }
  135.          }
  136.       }
  137.  
  138.       return var3;
  139.    }
  140.  
  141.    public int getTotalNum() {
  142.       return this.m_num;
  143.    }
  144. }
  145.