home *** CD-ROM | disk | FTP | other *** search
- package com.ms.xml.dso;
-
- import com.ms.com.ComLib;
- import com.ms.com.ComSuccessException;
- import com.ms.osp.OLEDBSimpleProvider;
- import com.ms.osp.OLEDBSimpleProviderListener;
- import com.ms.xml.om.Element;
- import com.ms.xml.om.ElementEnumeration;
- import com.ms.xml.om.ElementFactory;
- import com.ms.xml.util.Name;
- import java.util.Enumeration;
- import java.util.Vector;
-
- class XMLRowsetProvider implements OLEDBSimpleProvider {
- Element root;
- Element schema;
- Element row;
- ElementEnumeration iter;
- int rowindex;
- Name rowset;
- XMLRowsetProvider parent;
- OLEDBSimpleProviderListener listener;
- ElementFactory factory;
- Vector childProviders;
- static Name nameCOLUMN = Name.create("COLUMN");
- static Name nameROWSET = Name.create("ROWSET");
- static Name nameNAME = Name.create("NAME");
- static Name nameATTRIBUTE = Name.create("ATTRIBUTE");
- static Name nameVALUE = Name.create("VALUE");
-
- public Element findChild(Element var1, Name var2) {
- ElementEnumeration var3 = new ElementEnumeration(var1, (Name)null, 0);
-
- while(var3.hasMoreElements()) {
- Element var4 = (Element)var3.nextElement();
- if (var4.getType() == 0 && var4.getTagName() == var2) {
- return var4;
- }
-
- if (var4.numElements() > 0) {
- var4 = this.findChild(var4, var2);
- if (var4 != null) {
- return var4;
- }
- }
- }
-
- return null;
- }
-
- public void stopTransfer() {
- }
-
- public XMLRowsetProvider findChildProvider(Element var1) {
- if (this.childProviders != null) {
- Enumeration var2 = this.childProviders.elements();
-
- while(var2.hasMoreElements()) {
- XMLRowsetProvider var3 = (XMLRowsetProvider)var2.nextElement();
- if (var3.root == var1) {
- return var3;
- }
- }
- }
-
- return null;
- }
-
- public int getRowCount() {
- int var1 = 0;
- this.iter.reset();
-
- while(this.iter.nextElement() != null) {
- ++var1;
- }
-
- this.iter.reset();
- this.row = (Element)this.iter.nextElement();
- this.rowindex = 0;
- return var1;
- }
-
- public int getColumnCount() {
- int var1 = this.schema.getChildren().getLength();
- return var1;
- }
-
- public XMLRowsetProvider(Element var1, Element var2, ElementFactory var3, XMLRowsetProvider var4) {
- this.root = var1;
- this.schema = var2;
- this.parent = var4;
- this.factory = var3;
- this.rowset = Name.create((String)var2.getAttribute(nameNAME));
- this.resetIterator();
- }
-
- public String getLocale() {
- return "";
- }
-
- void removeChildProvider(Element var1) {
- XMLRowsetProvider var2 = this.findChildProvider(var1);
- if (var2 != null) {
- this.childProviders.removeElement(var2);
- }
-
- }
-
- public int isAsync() {
- return 0;
- }
-
- public Object getVariant(int var1, int var2, int var3) {
- Object var4 = null;
- if (var1 == 0) {
- if (var2 <= this.getColumnCount()) {
- Element var5 = this.schema.getChildren().getChild(var2 - 1);
- String var6 = (String)var5.getAttribute(nameNAME);
- if (var6 != null) {
- if (var5.getTagName() != nameCOLUMN) {
- var4 = "^" + var6 + "^";
- } else {
- var4 = var6;
- }
- }
- }
- } else {
- this.getRow(var1);
- var4 = this.getColumn(this.row, var2 - 1);
- }
-
- return var4;
- }
-
- public void setVariant(int var1, int var2, int var3, Object var4) {
- this.getRow(var1);
- if (this.row != null) {
- Element var5 = this.schema.getChildren().getChild(var2 - 1);
- if (var5.getTagName() == nameCOLUMN) {
- String var6 = (String)var5.getAttribute(nameNAME);
- if (var6 != null) {
- Name var7 = Name.create(var6);
- Element var8 = this.findChild(this.row, var7);
- if (var8 == null) {
- var8 = this.factory.createElement(this.row, 0, var7, (String)null);
- }
-
- if (var8 != null) {
- if (var8.numElements() == 0) {
- this.factory.createElement(var8, 1, (Name)null, (String)null);
- }
-
- if (var8.numElements() == 1 && var8.getChild(0).getType() == 1) {
- if (this.listener != null) {
- this.listener.aboutToChangeCell(var1, var2);
- }
-
- Element var9 = var8.getChild(0);
- String var10 = (String)var4;
- var9.setText(var10);
- if (this.listener != null) {
- this.listener.cellChanged(var1, var2);
- }
- }
- }
- }
- }
-
- }
- }
-
- public int getEstimatedRows() {
- return this.getRowCount();
- }
-
- public int deleteRows(int var1, int var2) {
- try {
- if (this.listener != null) {
- this.listener.aboutToDeleteRows(var1, var2);
- }
- } catch (ComSuccessException var6) {
- }
-
- int var3 = 0;
-
- for(int var4 = var1; var4 < var1 + var2; ++var4) {
- Element var5 = this.getRow(var1);
- if (var5 != null) {
- ++var3;
- this.root.removeChild(var5);
- this.removeChildProvider(var5);
- }
- }
-
- this.resetIterator();
- if (this.listener != null) {
- this.listener.deletedRows(var1, var2);
- }
-
- return var3;
- }
-
- public int insertRows(int var1, int var2) {
- try {
- if (this.listener != null) {
- this.listener.aboutToInsertRows(var1, var2);
- }
- } catch (ComSuccessException var7) {
- }
-
- Name var3 = Name.create(this.schema.getAttribute("NAME").toString());
-
- for(int var4 = var1; var4 < var1 + var2; ++var4) {
- Element var5 = this.factory.createElement((Element)null, 0, var3, (String)null);
- Element var6 = this.root.getChildren().getChild(var4);
- this.root.addChild(var5, var6);
- }
-
- this.resetIterator();
- if (this.listener != null) {
- this.listener.insertedRows(var1, var2);
- }
-
- return var2;
- }
-
- public void removeOLEDBSimpleProviderListener(OLEDBSimpleProviderListener var1) {
- if (this.listener != null) {
- ComLib.release(this.listener);
- }
-
- this.listener = null;
- }
-
- void addChildProvider(XMLRowsetProvider var1) {
- if (this.childProviders == null) {
- this.childProviders = new Vector();
- }
-
- this.childProviders.addElement(var1);
- }
-
- public int getRWStatus(int var1, int var2) {
- return 1;
- }
-
- public OLEDBSimpleProviderListener getListener() {
- return this.listener;
- }
-
- public void addOLEDBSimpleProviderListener(OLEDBSimpleProviderListener var1) {
- if (this.listener != null) {
- ComLib.release(this.listener);
- }
-
- this.listener = var1;
- }
-
- Element getRow(int var1) {
- if (this.rowindex != var1 - 1) {
- if (this.rowindex == var1 - 2) {
- ++this.rowindex;
- this.row = (Element)this.iter.nextElement();
- } else {
- this.iter.reset();
- this.row = (Element)this.iter.nextElement();
- this.rowindex = 0;
-
- for(int var2 = 0; var2 < var1 - 1; ++var2) {
- this.row = (Element)this.iter.nextElement();
- ++this.rowindex;
- }
- }
- }
-
- return this.row;
- }
-
- public int find(int var1, int var2, Object var3, int var4, int var5) {
- return 0;
- }
-
- void resetIterator() {
- this.iter = new ElementEnumeration(this.root, this.rowset, 0);
- this.row = (Element)this.iter.nextElement();
- this.rowindex = 0;
- }
-
- public Element getSchema() {
- return this.schema;
- }
-
- public Object getColumn(Element var1, int var2) {
- Element var3 = this.schema.getChildren().getChild(var2);
- Name var4 = Name.create((String)var3.getAttribute(nameNAME));
- if (var3.getTagName() == nameCOLUMN) {
- Element var7 = this.findChild(var1, var4);
- if (var7 != null) {
- String var6 = var7.getText();
- return var6;
- } else {
- return null;
- }
- } else {
- XMLRowsetProvider var5 = this.findChildProvider(var1);
- if (var5 == null) {
- var5 = new XMLRowsetProvider(var1, var3, this.factory, this);
- this.addChildProvider(var5);
- }
-
- return var5;
- }
- }
- }
-