home *** CD-ROM | disk | FTP | other *** search
/ Popular Software (Premium Edition) / mycd.iso / INTERNET / PIE5.0 / JAVI386.CAB / xmldso4.cab / com / ms / xml / dso / XMLRowsetProvider.class (.txt) < prev   
Encoding:
Java Class File  |  1997-10-10  |  5.4 KB  |  311 lines

  1. package com.ms.xml.dso;
  2.  
  3. import com.ms.com.ComSuccessException;
  4. import com.ms.osp.OLEDBSimpleProvider;
  5. import com.ms.osp.OLEDBSimpleProviderListener;
  6. import com.ms.xml.om.Element;
  7. import com.ms.xml.om.ElementEnumeration;
  8. import com.ms.xml.om.ElementFactory;
  9. import com.ms.xml.util.Name;
  10. import java.util.Enumeration;
  11. import java.util.Vector;
  12.  
  13. class XMLRowsetProvider implements OLEDBSimpleProvider {
  14.    Element root;
  15.    Element schema;
  16.    Element row;
  17.    ElementEnumeration iter;
  18.    int rowindex;
  19.    Name rowset;
  20.    XMLRowsetProvider parent;
  21.    OLEDBSimpleProviderListener listener;
  22.    ElementFactory factory;
  23.    Vector childProviders;
  24.    static Name nameCOLUMN = Name.create("COLUMN");
  25.    static Name nameROWSET = Name.create("ROWSET");
  26.    static Name nameNAME = Name.create("NAME");
  27.    static Name nameATTRIBUTE = Name.create("ATTRIBUTE");
  28.    static Name nameVALUE = Name.create("VALUE");
  29.  
  30.    public Element findChild(Element var1, Name var2) {
  31.       ElementEnumeration var3 = new ElementEnumeration(var1, (Name)null, 0);
  32.  
  33.       while(var3.hasMoreElements()) {
  34.          Element var4 = (Element)var3.nextElement();
  35.          if (var4.getType() == 0 && var4.getTagName() == var2) {
  36.             return var4;
  37.          }
  38.  
  39.          if (var4.numElements() > 0) {
  40.             var4 = this.findChild(var4, var2);
  41.             if (var4 != null) {
  42.                return var4;
  43.             }
  44.          }
  45.       }
  46.  
  47.       return null;
  48.    }
  49.  
  50.    public void stopTransfer() {
  51.    }
  52.  
  53.    public XMLRowsetProvider findChildProvider(Element var1) {
  54.       if (this.childProviders != null) {
  55.          Enumeration var2 = this.childProviders.elements();
  56.  
  57.          while(var2.hasMoreElements()) {
  58.             XMLRowsetProvider var3 = (XMLRowsetProvider)var2.nextElement();
  59.             if (var3.root == var1) {
  60.                return var3;
  61.             }
  62.          }
  63.       }
  64.  
  65.       return null;
  66.    }
  67.  
  68.    public int getRowCount() {
  69.       int var1 = 0;
  70.       this.iter.reset();
  71.  
  72.       while(this.iter.nextElement() != null) {
  73.          ++var1;
  74.       }
  75.  
  76.       this.iter.reset();
  77.       this.row = (Element)this.iter.nextElement();
  78.       this.rowindex = 0;
  79.       return var1;
  80.    }
  81.  
  82.    public int getColumnCount() {
  83.       int var1 = this.schema.numElements();
  84.       return var1;
  85.    }
  86.  
  87.    public String getLocale() {
  88.       return "";
  89.    }
  90.  
  91.    void removeChildProvider(Element var1) {
  92.       XMLRowsetProvider var2 = this.findChildProvider(var1);
  93.       if (var2 != null) {
  94.          this.childProviders.removeElement(var2);
  95.       }
  96.  
  97.    }
  98.  
  99.    public int isAsync() {
  100.       return 0;
  101.    }
  102.  
  103.    public Object getVariant(int var1, int var2, int var3) {
  104.       Object var4 = null;
  105.       if (var1 == 0) {
  106.          if (var2 <= this.getColumnCount()) {
  107.             Element var5 = this.schema.getChildren().getChild(var2 - 1);
  108.             String var6 = (String)var5.getAttribute(nameNAME);
  109.             if (var6 != null) {
  110.                if (var5.getTagName() != nameCOLUMN) {
  111.                   var4 = "^" + var6 + "^";
  112.                } else {
  113.                   var4 = var6;
  114.                }
  115.             }
  116.          }
  117.       } else {
  118.          this.getRow(var1);
  119.          var4 = this.getColumn(this.row, var2 - 1);
  120.       }
  121.  
  122.       return var4;
  123.    }
  124.  
  125.    public void setVariant(int var1, int var2, int var3, Object var4) {
  126.       this.getRow(var1);
  127.       if (this.row != null) {
  128.          Element var5 = this.schema.getChildren().getChild(var2 - 1);
  129.          if (var5.getTagName() == nameCOLUMN) {
  130.             String var6 = (String)var5.getAttribute(nameNAME);
  131.             if (var6 != null) {
  132.                Name var7 = Name.create(var6);
  133.                Element var8 = this.findChild(this.row, var7);
  134.                if (var8 == null) {
  135.                   var8 = this.factory.createElement(0, var7);
  136.                   this.row.addChild(var8, (Element)null);
  137.                }
  138.  
  139.                if (var8 != null) {
  140.                   if (var8.numElements() == 0) {
  141.                      var8.addChild(this.factory.createElement(1, (Name)null), (Element)null);
  142.                   }
  143.  
  144.                   if (var8.numElements() == 1 && var8.getChild(0).getType() == 1) {
  145.                      if (this.listener != null) {
  146.                         this.listener.aboutToChangeCell(var1, var2);
  147.                      }
  148.  
  149.                      Element var9 = var8.getChild(0);
  150.                      String var10 = (String)var4;
  151.                      var9.setText(var10);
  152.                      if (this.listener != null) {
  153.                         this.listener.cellChanged(var1, var2);
  154.                      }
  155.                   }
  156.                }
  157.             }
  158.          }
  159.  
  160.       }
  161.    }
  162.  
  163.    public int getEstimatedRows() {
  164.       return this.getRowCount();
  165.    }
  166.  
  167.    public int deleteRows(int var1, int var2) {
  168.       try {
  169.          if (this.listener != null) {
  170.             this.listener.aboutToDeleteRows(var1, var2);
  171.          }
  172.       } catch (ComSuccessException var6) {
  173.       }
  174.  
  175.       int var3 = 0;
  176.  
  177.       for(int var4 = var1; var4 < var1 + var2; ++var4) {
  178.          Element var5 = this.getRow(var1);
  179.          if (var5 != null) {
  180.             ++var3;
  181.             this.root.removeChild(var5);
  182.             this.removeChildProvider(var5);
  183.          }
  184.       }
  185.  
  186.       this.resetIterator();
  187.       if (this.listener != null) {
  188.          this.listener.deletedRows(var1, var2);
  189.       }
  190.  
  191.       return var3;
  192.    }
  193.  
  194.    public int insertRows(int var1, int var2) {
  195.       try {
  196.          if (this.listener != null) {
  197.             this.listener.aboutToInsertRows(var1, var2);
  198.          }
  199.       } catch (ComSuccessException var7) {
  200.       }
  201.  
  202.       Name var3 = Name.create(this.schema.getAttribute("NAME").toString());
  203.  
  204.       for(int var4 = var1; var4 < var1 + var2; ++var4) {
  205.          Element var5 = this.factory.createElement(0, var3);
  206.          Element var6 = this.root.getChildren().getChild(var4);
  207.          this.root.addChild(var5, var6);
  208.       }
  209.  
  210.       this.resetIterator();
  211.       if (this.listener != null) {
  212.          this.listener.insertedRows(var1, var2);
  213.       }
  214.  
  215.       return var2;
  216.    }
  217.  
  218.    public void removeOLEDBSimpleProviderListener(OLEDBSimpleProviderListener var1) {
  219.       this.listener = null;
  220.    }
  221.  
  222.    void addChildProvider(XMLRowsetProvider var1) {
  223.       if (this.childProviders == null) {
  224.          this.childProviders = new Vector();
  225.       }
  226.  
  227.       this.childProviders.addElement(var1);
  228.    }
  229.  
  230.    public int getRWStatus(int var1, int var2) {
  231.       return 1;
  232.    }
  233.  
  234.    public OLEDBSimpleProviderListener getListener() {
  235.       return this.listener;
  236.    }
  237.  
  238.    public void addOLEDBSimpleProviderListener(OLEDBSimpleProviderListener var1) {
  239.       this.listener = var1;
  240.       if (this.parent == null) {
  241.          this.listener.transferComplete(0);
  242.       }
  243.  
  244.    }
  245.  
  246.    public XMLRowsetProvider(Element var1, Element var2, ElementFactory var3, XMLRowsetProvider var4) {
  247.       this.root = var1;
  248.       this.schema = var2;
  249.       this.parent = var4;
  250.       this.factory = var3;
  251.       this.rowset = Name.create((String)var2.getAttribute(nameNAME));
  252.       this.resetIterator();
  253.    }
  254.  
  255.    Element getRow(int var1) {
  256.       if (this.rowindex != var1 - 1) {
  257.          if (this.rowindex == var1 - 2) {
  258.             ++this.rowindex;
  259.             this.row = (Element)this.iter.nextElement();
  260.          } else {
  261.             this.iter.reset();
  262.             this.row = (Element)this.iter.nextElement();
  263.             this.rowindex = 0;
  264.  
  265.             for(int var2 = 0; var2 < var1 - 1; ++var2) {
  266.                this.row = (Element)this.iter.nextElement();
  267.                ++this.rowindex;
  268.             }
  269.          }
  270.       }
  271.  
  272.       return this.row;
  273.    }
  274.  
  275.    public int find(int var1, int var2, Object var3, int var4, int var5) {
  276.       return 0;
  277.    }
  278.  
  279.    void resetIterator() {
  280.       this.iter = new ElementEnumeration(this.root, this.rowset, 0);
  281.       this.row = (Element)this.iter.nextElement();
  282.       this.rowindex = 0;
  283.    }
  284.  
  285.    public Element getSchema() {
  286.       return this.schema;
  287.    }
  288.  
  289.    public Object getColumn(Element var1, int var2) {
  290.       Element var3 = this.schema.getChildren().getChild(var2);
  291.       Name var4 = Name.create((String)var3.getAttribute(nameNAME));
  292.       if (var3.getTagName() == nameCOLUMN) {
  293.          Element var7 = this.findChild(var1, var4);
  294.          if (var7 != null) {
  295.             String var6 = var7.getText();
  296.             return var6;
  297.          } else {
  298.             return null;
  299.          }
  300.       } else {
  301.          XMLRowsetProvider var5 = this.findChildProvider(var1);
  302.          if (var5 == null) {
  303.             var5 = new XMLRowsetProvider(var1, var3, this.factory, this);
  304.             this.addChildProvider(var5);
  305.          }
  306.  
  307.          return var5;
  308.       }
  309.    }
  310. }
  311.