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

  1. package XMLConsumer;
  2.  
  3. import BsscXML.IBsscXMLElementReader;
  4. import hhapplet.IChunkedDataListener;
  5. import hhapplet.INumChunkedData;
  6. import hhapplet.Language;
  7. import hhapplet.UsedItems;
  8. import java.net.URL;
  9.  
  10. public class IdxData extends Consumer implements INumChunkedData {
  11.    private URL m_projURL = null;
  12.    private String m_sFirst = null;
  13.    private String m_sLast = null;
  14.    private int m_num = 0;
  15.    private int m_index = 0;
  16.    private int m_lastIndex = 0;
  17.    private IdxEntry[] m_keys;
  18.    private boolean m_bLoaded;
  19.    private IChunkedDataListener m_listener;
  20.    private UsedItems m_usedItems;
  21.    private boolean m_bDone;
  22.  
  23.    public int getKeyPosition(boolean var1, String var2) {
  24.       int var3;
  25.       if (var1) {
  26.          var3 = this.m_num;
  27.       } else {
  28.          var3 = -1;
  29.       }
  30.  
  31.       if (this.m_keys != null && this.m_keys.length > 0) {
  32.          int var4 = this.m_keys.length;
  33.  
  34.          for(int var7 = 0; var7 < var4; ++var7) {
  35.             IdxEntry var6 = this.m_keys[var7];
  36.             if (var1) {
  37.                if (Language.compare(var6.getName(), var2) > 0) {
  38.                   var3 = var7;
  39.                   break;
  40.                }
  41.             } else {
  42.                if (Language.compare(var6.getName(), var2) >= 0) {
  43.                   break;
  44.                }
  45.  
  46.                var3 = var7;
  47.             }
  48.  
  49.             var7 += var6.getNextSpan();
  50.          }
  51.       }
  52.  
  53.       return var3;
  54.    }
  55.  
  56.    public String getKeyByPosition(int var1) {
  57.       int var2 = var1 - (this.m_lastIndex - this.m_num);
  58.       if (var2 >= 0 && var2 < this.m_keys.length) {
  59.          Object var3 = null;
  60.  
  61.          do {
  62.             var5 = this.m_keys[var2++];
  63.          } while(var5.getType() == 3 && var2 < this.m_keys.length);
  64.  
  65.          if (var5.getType() != 3) {
  66.             return var5.getName();
  67.          }
  68.  
  69.          var2 = var1 - (this.m_lastIndex - this.m_num) - 1;
  70.          if (var2 >= 0) {
  71.             do {
  72.                var5 = this.m_keys[var2--];
  73.             } while(var5.getType() == 3 && var2 >= 0);
  74.          }
  75.  
  76.          if (var5.getType() != 3) {
  77.             return var5.getName();
  78.          }
  79.       }
  80.  
  81.       return null;
  82.    }
  83.  
  84.    public int getNum() {
  85.       return this.m_num;
  86.    }
  87.  
  88.    public IdxData(URL var1, URL var2, String var3, String var4, int var5, int var6) {
  89.       super(var1);
  90.       this.m_sFirst = var3;
  91.       this.m_sLast = var4;
  92.       this.m_num = var5;
  93.       this.m_projURL = var2;
  94.       this.m_lastIndex = var6;
  95.       this.m_bLoaded = false;
  96.       this.m_bDone = false;
  97.       this.m_keys = new IdxEntry[var5];
  98.       this.m_listener = null;
  99.       this.m_usedItems = new UsedItems();
  100.    }
  101.  
  102.    public IEntry getEntry(int var1) {
  103.       return this.m_keys[var1];
  104.    }
  105.  
  106.    public String getLast() {
  107.       return this.m_sLast;
  108.    }
  109.  
  110.    public void consume(IBsscXMLElementReader var1) {
  111.       if (var1.getName().equals("indexdata")) {
  112.          int var2 = 0;
  113.          boolean var3 = false;
  114.          int var4 = 0;
  115.  
  116.          while(true) {
  117.             IBsscXMLElementReader var5 = var1.getChild(var2++);
  118.             if (var5 == null) {
  119.                if (this.m_listener != null) {
  120.                   this.m_listener.putData(this);
  121.                }
  122.                break;
  123.             }
  124.  
  125.             if (var5.getName().equals("key")) {
  126.                String var6 = var5.getAttribute("name");
  127.                if (var6 != null && var6.length() != 0) {
  128.                   IdxEntry var7 = new IdxEntry(var6, var4, 2, 1, this);
  129.                   String var8 = var5.getAttribute("target");
  130.                   if (var8 != null) {
  131.                      var7.setTarget(var8);
  132.                   }
  133.  
  134.                   this.m_keys[this.m_index++] = var7;
  135.                   int var9 = this.m_index;
  136.                   this.processKey(var5, var7, 2);
  137.                   var4 = this.m_index - var9;
  138.                   var7.setNextSpan(var4);
  139.                }
  140.             } else if (var5.getName().equals("letter")) {
  141.                String var10 = var5.getAttribute("name");
  142.                if (var10 != null && var10.length() != 0) {
  143.                   IdxEntry var11 = new IdxEntry(var10, var4, 1, 1, this);
  144.                   this.m_keys[this.m_index++] = var11;
  145.                   var4 = 0;
  146.                }
  147.             }
  148.          }
  149.       }
  150.  
  151.    }
  152.  
  153.    public String getFirst() {
  154.       return this.m_sFirst;
  155.    }
  156.  
  157.    public boolean isLoaded() {
  158.       return this.m_bLoaded;
  159.    }
  160.  
  161.    public void load(IChunkedDataListener var1) {
  162.       if (!this.m_bLoaded) {
  163.          this.m_listener = var1;
  164.          ((Consumer)this).process(false);
  165.          this.m_bLoaded = true;
  166.       }
  167.  
  168.    }
  169.  
  170.    public UsedItems getUsedItems() {
  171.       return this.m_usedItems;
  172.    }
  173.  
  174.    public int getLastIndex() {
  175.       return this.m_lastIndex;
  176.    }
  177.  
  178.    public URL getProjURL() {
  179.       return this.m_projURL;
  180.    }
  181.  
  182.    public void setDone(boolean var1) {
  183.       this.m_bDone = var1;
  184.    }
  185.  
  186.    private void processKey(IBsscXMLElementReader var1, IdxEntry var2, int var3) {
  187.       int var4 = 0;
  188.       boolean var5 = false;
  189.       int var6 = 0;
  190.  
  191.       while(true) {
  192.          IBsscXMLElementReader var7 = var1.getChild(var4++);
  193.          if (var7 == null) {
  194.             return;
  195.          }
  196.  
  197.          if (var7.getName().equals("topic")) {
  198.             String var8 = var7.getAttribute("name");
  199.             String var9 = var7.getAttribute("url");
  200.             if (var9 != null && var9.length() != 0) {
  201.                if (var8 == null || var8.length() == 0) {
  202.                   var8 = var9;
  203.                }
  204.  
  205.                Topic var10 = new Topic(var9, var8);
  206.                var2.addTopic(var10);
  207.             }
  208.          } else if (var7.getName().equals("key")) {
  209.             String var11 = var7.getAttribute("name");
  210.             if (var11 != null && var11.length() != 0) {
  211.                IdxEntry var12 = new IdxEntry(var11, var6, 3, var3, this);
  212.                this.m_keys[this.m_index++] = var12;
  213.                int var13 = this.m_index;
  214.                this.processKey(var7, var12, var3 + 1);
  215.                var6 = this.m_index - var13;
  216.                var12.setNextSpan(var6);
  217.             }
  218.          }
  219.       }
  220.    }
  221. }
  222.