home *** CD-ROM | disk | FTP | other *** search
- package XMLConsumer;
-
- import BsscXML.IBsscXMLElementReader;
- import hhapplet.IChunkedDataListener;
- import hhapplet.INumChunkedData;
- import hhapplet.Language;
- import hhapplet.UsedItems;
- import java.net.URL;
-
- public class IdxData extends Consumer implements INumChunkedData {
- private URL m_projURL = null;
- private String m_sFirst = null;
- private String m_sLast = null;
- private int m_num = 0;
- private int m_index = 0;
- private int m_lastIndex = 0;
- private IdxEntry[] m_keys;
- private boolean m_bLoaded;
- private IChunkedDataListener m_listener;
- private UsedItems m_usedItems;
- private boolean m_bDone;
-
- public int getKeyPosition(boolean var1, String var2) {
- int var3;
- if (var1) {
- var3 = this.m_num;
- } else {
- var3 = -1;
- }
-
- if (this.m_keys != null && this.m_keys.length > 0) {
- int var4 = this.m_keys.length;
-
- for(int var7 = 0; var7 < var4; ++var7) {
- IdxEntry var6 = this.m_keys[var7];
- if (var1) {
- if (Language.compare(var6.getName(), var2) > 0) {
- var3 = var7;
- break;
- }
- } else {
- if (Language.compare(var6.getName(), var2) >= 0) {
- break;
- }
-
- var3 = var7;
- }
-
- var7 += var6.getNextSpan();
- }
- }
-
- return var3;
- }
-
- public String getKeyByPosition(int var1) {
- int var2 = var1 - (this.m_lastIndex - this.m_num);
- if (var2 >= 0 && var2 < this.m_keys.length) {
- Object var3 = null;
-
- do {
- var5 = this.m_keys[var2++];
- } while(var5.getType() == 3 && var2 < this.m_keys.length);
-
- if (var5.getType() != 3) {
- return var5.getName();
- }
-
- var2 = var1 - (this.m_lastIndex - this.m_num) - 1;
- if (var2 >= 0) {
- do {
- var5 = this.m_keys[var2--];
- } while(var5.getType() == 3 && var2 >= 0);
- }
-
- if (var5.getType() != 3) {
- return var5.getName();
- }
- }
-
- return null;
- }
-
- public int getNum() {
- return this.m_num;
- }
-
- public IdxData(URL var1, URL var2, String var3, String var4, int var5, int var6) {
- super(var1);
- this.m_sFirst = var3;
- this.m_sLast = var4;
- this.m_num = var5;
- this.m_projURL = var2;
- this.m_lastIndex = var6;
- this.m_bLoaded = false;
- this.m_bDone = false;
- this.m_keys = new IdxEntry[var5];
- this.m_listener = null;
- this.m_usedItems = new UsedItems();
- }
-
- public IEntry getEntry(int var1) {
- return this.m_keys[var1];
- }
-
- public String getLast() {
- return this.m_sLast;
- }
-
- public void consume(IBsscXMLElementReader var1) {
- if (var1.getName().equals("indexdata")) {
- int var2 = 0;
- boolean var3 = false;
- int var4 = 0;
-
- while(true) {
- IBsscXMLElementReader var5 = var1.getChild(var2++);
- if (var5 == null) {
- if (this.m_listener != null) {
- this.m_listener.putData(this);
- }
- break;
- }
-
- if (var5.getName().equals("key")) {
- String var6 = var5.getAttribute("name");
- if (var6 != null && var6.length() != 0) {
- IdxEntry var7 = new IdxEntry(var6, var4, 2, 1, this);
- String var8 = var5.getAttribute("target");
- if (var8 != null) {
- var7.setTarget(var8);
- }
-
- this.m_keys[this.m_index++] = var7;
- int var9 = this.m_index;
- this.processKey(var5, var7, 2);
- var4 = this.m_index - var9;
- var7.setNextSpan(var4);
- }
- } else if (var5.getName().equals("letter")) {
- String var10 = var5.getAttribute("name");
- if (var10 != null && var10.length() != 0) {
- IdxEntry var11 = new IdxEntry(var10, var4, 1, 1, this);
- this.m_keys[this.m_index++] = var11;
- var4 = 0;
- }
- }
- }
- }
-
- }
-
- public String getFirst() {
- return this.m_sFirst;
- }
-
- public boolean isLoaded() {
- return this.m_bLoaded;
- }
-
- public void load(IChunkedDataListener var1) {
- if (!this.m_bLoaded) {
- this.m_listener = var1;
- ((Consumer)this).process(false);
- this.m_bLoaded = true;
- }
-
- }
-
- public UsedItems getUsedItems() {
- return this.m_usedItems;
- }
-
- public int getLastIndex() {
- return this.m_lastIndex;
- }
-
- public URL getProjURL() {
- return this.m_projURL;
- }
-
- public void setDone(boolean var1) {
- this.m_bDone = var1;
- }
-
- private void processKey(IBsscXMLElementReader var1, IdxEntry var2, int var3) {
- int var4 = 0;
- boolean var5 = false;
- int var6 = 0;
-
- while(true) {
- IBsscXMLElementReader var7 = var1.getChild(var4++);
- if (var7 == null) {
- return;
- }
-
- if (var7.getName().equals("topic")) {
- String var8 = var7.getAttribute("name");
- String var9 = var7.getAttribute("url");
- if (var9 != null && var9.length() != 0) {
- if (var8 == null || var8.length() == 0) {
- var8 = var9;
- }
-
- Topic var10 = new Topic(var9, var8);
- var2.addTopic(var10);
- }
- } else if (var7.getName().equals("key")) {
- String var11 = var7.getAttribute("name");
- if (var11 != null && var11.length() != 0) {
- IdxEntry var12 = new IdxEntry(var11, var6, 3, var3, this);
- this.m_keys[this.m_index++] = var12;
- int var13 = this.m_index;
- this.processKey(var7, var12, var3 + 1);
- var6 = this.m_index - var13;
- var12.setNextSpan(var6);
- }
- }
- }
- }
- }
-