home *** CD-ROM | disk | FTP | other *** search
- package XMLConsumer;
-
- import BsscXML.IBsscXMLElementReader;
- import hhapplet.IChunkedData;
- import hhapplet.IChunkedInfo;
- import hhapplet.Language;
- import hhapplet.URLFileHandler;
- import java.net.MalformedURLException;
- import java.net.URL;
- import java.util.Vector;
-
- public class Idx extends Consumer implements IChunkedInfo {
- private URL m_projURL = null;
- private Vector m_vChunkedIndex = null;
- private int m_num = 0;
-
- public IChunkedData getChunkByIdx(int var1) {
- IdxData var2 = null;
- if (this.m_vChunkedIndex != null) {
- int var3 = this.m_vChunkedIndex.size();
- if (var3 > 0) {
- int var4 = 0;
- int var5 = var3 - 1;
- boolean var6 = false;
-
- do {
- int var7 = var4 + var5 >> 1;
- if (var1 < ((IdxData)this.m_vChunkedIndex.elementAt(var7)).getLastIndex()) {
- var6 = true;
- var5 = var7;
- } else {
- var4 = var7 + 1;
- }
- } while(var5 > var4);
-
- if (var6) {
- var2 = (IdxData)this.m_vChunkedIndex.elementAt(var5);
- } else if (var1 < ((IdxData)this.m_vChunkedIndex.elementAt(var4)).getLastIndex()) {
- var2 = (IdxData)this.m_vChunkedIndex.elementAt(var4);
- }
- }
- }
-
- return var2;
- }
-
- public Idx(URL var1, URL var2) {
- super(var1);
- this.m_projURL = var2;
- this.m_vChunkedIndex = new Vector();
- }
-
- public void consume(IBsscXMLElementReader var1) {
- if (var1.getName().equals("index")) {
- int var2 = 0;
-
- while(true) {
- IBsscXMLElementReader var3 = var1.getChild(var2++);
- if (var3 == null) {
- break;
- }
-
- if (var3.getName().equals("chunkinfo")) {
- String var4 = var3.getAttribute("url");
- String var5 = var3.getAttribute("first");
- String var6 = var3.getAttribute("last");
- String var7 = var3.getAttribute("num");
- if (var4 != null && var5 != null && var6 != null && var7 != null) {
- int var8 = 0;
-
- try {
- var8 = Integer.parseInt(var7);
- this.m_num += var8;
- } catch (NumberFormatException var11) {
- ((Throwable)var11).printStackTrace();
- }
-
- try {
- URL var9 = URLFileHandler.makeURL(((Consumer)this).getURL(), var4, (String)null);
- this.m_vChunkedIndex.addElement(new IdxData(var9, this.m_projURL, var5, var6, var8, this.m_num));
- } catch (MalformedURLException var10) {
- ((Throwable)var10).printStackTrace();
- }
- }
- }
- }
- }
-
- }
-
- public IChunkedData getChunkedData(boolean var1, String var2) {
- IdxData var3 = null;
- if (this.m_vChunkedIndex != null) {
- int var4 = this.m_vChunkedIndex.size();
- if (var4 > 0) {
- int var5 = 0;
- int var6 = var4 - 1;
- boolean var7 = false;
-
- do {
- int var8 = var5 + var6 + (var1 ? 0 : 1) >> 1;
- IdxData var9 = (IdxData)this.m_vChunkedIndex.elementAt(var8);
- if (var9 == null) {
- return null;
- }
-
- if (var1) {
- if (Language.compare(var2, var9.getLast()) < 0) {
- var7 = true;
- var6 = var8;
- } else {
- var5 = var8 + 1;
- }
- } else if (Language.compare(var2, var9.getFirst()) > 0) {
- var7 = true;
- var5 = var8;
- } else {
- var6 = var8 - 1;
- }
- } while(var6 > var5);
-
- if (var7) {
- if (var1) {
- var3 = (IdxData)this.m_vChunkedIndex.elementAt(var6);
- } else {
- var3 = (IdxData)this.m_vChunkedIndex.elementAt(var5);
- }
- } else if (var1) {
- if (var5 < var4 && Language.compare(var2, ((IdxData)this.m_vChunkedIndex.elementAt(var5)).getLast()) < 0) {
- var3 = (IdxData)this.m_vChunkedIndex.elementAt(var5);
- }
- } else if (var6 >= 0 && Language.compare(var2, ((IdxData)this.m_vChunkedIndex.elementAt(var6)).getFirst()) > 0) {
- var3 = (IdxData)this.m_vChunkedIndex.elementAt(var6);
- }
- }
- }
-
- return var3;
- }
-
- public int getTotalNum() {
- return this.m_num;
- }
- }
-