home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xa;
-
- import com.extensibility.app.BaseEdit;
- import com.extensibility.app.DialogFactory;
- import com.extensibility.app.UI;
- import com.extensibility.rock.table.QlickerDataSource;
- import com.extensibility.util.Debug;
- import com.extensibility.xa.undo.AttrDefaultUndoable;
- import com.extensibility.xa.undo.AttrNameUndoable;
- import com.extensibility.xa.undo.AttrNewRowUndoable;
- import com.extensibility.xa.undo.AttrOptionsUndoable;
- import com.extensibility.xa.undo.AttrOwnerUndoable;
- import com.extensibility.xa.undo.AttrRequiredUndoable;
- import com.extensibility.xa.undo.AttrTypeUndoable;
- import com.extensibility.xml.AttributeDeclaration;
- import com.extensibility.xml.BaseDeclaration;
- import com.extensibility.xml.DTDUtilities;
- import com.extensibility.xml.DataTypeDeclaration;
- import com.extensibility.xml.DeclarationChangeEvent;
- import com.extensibility.xml.ParserException;
- import com.extensibility.xml.dt.DataTypeEnumeration;
- import com.extensibility.xml.dt.DataTypeFactory;
- import com.extensibility.xml.dt.DataTypeIntf;
- import java.awt.Component;
- import java.util.Enumeration;
- import java.util.EventObject;
- import java.util.Hashtable;
- import java.util.Vector;
- import javax.swing.table.AbstractTableModel;
-
- public final class AttrTableDataModel extends DeclModelExtra implements QlickerDataSource {
- public static final int COL_NAME = 2;
- public static final int COL_OWNER = 3;
- public static final int COL_TYPE = 4;
- public static final int COL_OPTIONS = 5;
- public static final int COL_DEFAULT = 6;
- public static final int COL_REQUIRED = 7;
- public static final int COL_COUNT = 8;
- static final int AGGREGATE_BY_REFERENT = 1;
- static final int AGGREGATE_BY_MATCH = 2;
-
- public AttrTableDataModel(SchemaDoc var1) {
- super(var1, Class.forName("com.extensibility.xa.AggregateAttributeDecl"), Class.forName("com.extensibility.xml.AttributeDeclaration"));
- }
-
- String getGlobalName() {
- return ((DeclTableModel)this).getSchemaDoc().getSchema().isSupported("GESTALT_GLOBAL_ATTRS") ? UI.getString("attr.global") : "";
- }
-
- public int getColumnCount() {
- return this.getBaseColumnCount() + ((DeclModelExtra)this).getExtraColumnCount();
- }
-
- protected final int getBaseColumnCount() {
- return 8;
- }
-
- char getHeaderMnemonic(int var1) {
- return var1 < 8 ? UI.getMnemonic(String.valueOf(String.valueOf("attrlist.column").concat(String.valueOf(var1))).concat(String.valueOf(".header"))) : '\u0000';
- }
-
- public String getColumnName(int var1) {
- return var1 < 8 ? String.valueOf(String.valueOf("attrlist.column").concat(String.valueOf(var1))).concat(String.valueOf(".header")) : super.getColumnName(var1);
- }
-
- public Class getColumnClass(int var1) {
- switch (var1) {
- case 2:
- return (new String()).getClass();
- case 3:
- return (new String()).getClass();
- case 4:
- return (new String()).getClass();
- case 5:
- return (new String()).getClass();
- case 6:
- return (new String()).getClass();
- case 7:
- return (new Boolean(true)).getClass();
- default:
- return super.getColumnClass(var1);
- }
- }
-
- public boolean isCellEditable(int var1, int var2) {
- if (var1 < 0) {
- return false;
- } else {
- return var2 == 3 && !((DeclTableModel)this).isNewRow(var1) && this.getAggregate(var1).isShared() ? false : super.isCellEditable(var1, var2);
- }
- }
-
- public Object getValueAt(int var1, int var2) {
- if (((DeclTableModel)this).isNewRow(var1)) {
- switch (var2) {
- case 2:
- case 3:
- case 4:
- case 5:
- case 6:
- return "";
- case 7:
- return Boolean.FALSE;
- default:
- return super.getValueAt(var1, var2);
- }
- } else {
- AggregateAttributeDecl var3 = this.getAggregate(var1);
- switch (var2) {
- case 2:
- return var3.getName();
- case 3:
- String var4 = var3.getOwnerName();
- if (var4.length() == 0) {
- return this.getGlobalName();
- }
-
- return var4;
- case 4:
- return var3.getTypeForDisplay(((DeclTableModel)this).getSchemaDoc().getSchema());
- case 5:
- return this.getIndAttributeOptions(var1);
- case 6:
- if (var3.getDefault() != null && var3.getDefault().equals("")) {
- return "\"\"";
- } else {
- if (var3.getDefault() == null) {
- return new String("");
- }
-
- return var3.getDefault();
- }
- case 7:
- return var3.getRequired() ? Boolean.TRUE : Boolean.FALSE;
- default:
- return super.getValueAt(var1, var2);
- }
- }
- }
-
- public String getIndAttributeOptions(int var1) {
- return this.getAttributeOptions(this.getAggregate(var1));
- }
-
- public String getAttributeOptions(AggregateAttributeDecl var1) {
- return var1.getOptions();
- }
-
- public AggregateAttributeDecl getAggregate(int var1) {
- return (AggregateAttributeDecl)((DeclTableModel)this).getDeclaration(var1);
- }
-
- public int getMetaSelector() {
- return 3;
- }
-
- private Vector aggregateByReferent() {
- Hashtable var1 = new Hashtable();
- Enumeration var2 = super.doc.getDeclarations(Class.forName("com.extensibility.xml.AttributeDeclaration"));
-
- while(var2.hasMoreElements()) {
- AttributeDeclaration var3 = (AttributeDeclaration)var2.nextElement();
- if (var3.isGlobal()) {
- var1.put(((BaseDeclaration)var3).getName(), new AggregateAttributeDecl(var3));
- }
- }
-
- Vector var7 = new Vector();
- var2 = super.doc.getDeclarations(Class.forName("com.extensibility.xml.AttributeDeclaration"));
-
- while(var2.hasMoreElements()) {
- AttributeDeclaration var4 = (AttributeDeclaration)var2.nextElement();
- if (var4.isGlobal()) {
- var7.addElement(var1.get(((BaseDeclaration)var4).getName()));
- } else if (var4.isReference()) {
- AggregateAttributeDecl var5 = (AggregateAttributeDecl)var1.get(((BaseDeclaration)var4).getName());
- if (var5 != null && var5.equals(var4)) {
- var5.addAttribute(var4);
- } else {
- var7.addElement(new AggregateAttributeDecl(var4));
- }
- } else {
- var7.addElement(new AggregateAttributeDecl(var4));
- }
- }
-
- return var7;
- }
-
- private Vector aggregateByMatch() {
- Vector var1 = new Vector();
- Enumeration var2 = super.doc.getDeclarations(Class.forName("com.extensibility.xml.AttributeDeclaration"));
-
- while(var2.hasMoreElements()) {
- AttributeDeclaration var3 = (AttributeDeclaration)var2.nextElement();
- int var4 = var1.size() - 1;
- int var5 = 0;
-
- while(var5 <= var4) {
- int var6 = var5 + (var4 - var5) / 2;
- AggregateAttributeDecl var7 = (AggregateAttributeDecl)var1.elementAt(var6);
- int var8 = var7.compareTo(var3);
- if (var8 == 0) {
- var7.addAttribute(var3);
- break;
- }
-
- if (var8 < 0) {
- var5 = var6 + 1;
- } else {
- var4 = var6 - 1;
- }
- }
-
- if (var5 > var4) {
- AggregateAttributeDecl var9 = new AggregateAttributeDecl(var3);
- var1.insertElementAt(var9, var5);
- }
- }
-
- return var1;
- }
-
- public Enumeration getDeclarations() {
- Vector var1 = this.getAggregationMethod() == 2 ? this.aggregateByMatch() : this.aggregateByReferent();
- return var1.elements();
- }
-
- ParserException validateCell(String var1, int var2, int var3) {
- if (var1.equals(this.getValueAt(var2, var3))) {
- return null;
- } else {
- switch (var3) {
- case 2:
- return ((DeclTableModel)this).validateName(var1, (Class)null, (BaseDeclaration)null, true);
- case 3:
- if (var1.length() == 0 && ((DeclTableModel)this).getSchemaDoc().getSchema().isSupported("GESTALT_GLOBAL_ATTRS")) {
- return null;
- } else {
- String var4;
- if (DTDUtilities.isPEName(var1)) {
- var4 = var1.substring(1);
- } else {
- var4 = var1;
- }
-
- ParserException var11 = ((DeclTableModel)this).validateName(var4, (Class)null, (BaseDeclaration)null, true);
- if (var11 != null) {
- return var11;
- } else {
- AttributeDeclaration.Owner var6 = super.doc.getNamedAttributeOwner(var1);
- if (var6 == null && DTDUtilities.isPEName(var1)) {
- String var7 = DTDUtilities.convertPEName(var1, false);
- if (super.doc.getNamedDeclaration(var7, Class.forName("com.extensibility.xml.InternalPEDeclaration")) != null) {
- return new ParserException(231, var1);
- }
-
- if (!XADialogFactory.askAutoCreatePE((Component)null, var1)) {
- var11 = new ParserException(208, var1);
- var11.setBeenReported(true);
- return var11;
- }
- }
-
- return null;
- }
- }
- case 4:
- if (var1.trim().length() != 0 && ((DeclTableModel)this).getSchemaDoc().getNamedDataTypeIntf(var1) == null) {
- if (var1.indexOf(":") != -1) {
- return null;
- }
-
- if (!((DeclTableModel)this).getSchemaDoc().isSupported(Class.forName("com.extensibility.xml.DataTypeDeclaration"))) {
- return new ParserException(207, var1);
- }
-
- if (!XADialogFactory.askAutoCreateDataType((Component)null, var1)) {
- return new ParserException(207, var1);
- }
- }
-
- return null;
- case 5:
- try {
- this.getAggregate(var2).getDataType().setOptions(var1);
- } catch (NumberFormatException var8) {
- ParserException var10 = new ParserException(95, "");
- return var10;
- } catch (IndexOutOfBoundsException var9) {
- ParserException var5 = new ParserException(96, "");
- return var5;
- }
- case 6:
- case 7:
- default:
- return super.validateCell(var1, var2, var3);
- }
- }
- }
-
- public void setValueAt(Object var1, int var2, int var3) {
- if (!var1.equals(this.getValueAt(var2, var3))) {
- AggregateAttributeDecl var4 = this.getAggregate(var2);
- if (((DeclTableModel)this).isNewRow(var2)) {
- if (var3 == 2) {
- String var10000 = (String)var1;
- } else {
- ((DeclTableModel)this).getUniqueDeclName((String)null);
- }
-
- AttrNewRowUndoable var6 = new AttrNewRowUndoable(this, var2, var1);
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var6);
- ((BaseEdit)var6).doCommand();
- super.doc.touch(super.doc.getFocusedURI(true));
- if (var3 == 2) {
- return;
- }
- } else {
- super.doc.touch(var4);
- }
-
- switch (var3) {
- case 2:
- AttrNameUndoable var5 = new AttrNameUndoable(this, var4, var1);
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var5);
- ((BaseEdit)var5).doCommand();
- break;
- case 3:
- BaseDeclaration var11 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var1.toString(), Class.forName("com.extensibility.xml.ElementDeclaration"));
- if (var11 != null && !((DeclTableModel)this).getSchemaDoc().isEditable(var11.getURI())) {
- String var14 = UI.getString("stop.decl.is.locked", var1.toString());
- DialogFactory.stop((Component)null, var14);
- } else {
- AttrOwnerUndoable var13 = new AttrOwnerUndoable(this, var4, var1);
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var13);
- ((BaseEdit)var13).doCommand();
- }
- break;
- case 4:
- if (var1.toString().trim().length() == 0) {
- var1 = ((DeclTableModel)this).getSchemaDoc().getSchema().getDataTypeDisplay(DataTypeFactory.createDataType(DataTypeIntf.STRING));
- }
-
- if (((DeclTableModel)this).getSchemaDoc().getNamedDataTypeIntf((String)var1) == null && ((String)var1).indexOf(":") == -1) {
- DataTypeDeclaration var7 = new DataTypeDeclaration(var1.toString(), DataTypeFactory.createDataType(DataTypeIntf.STRING));
- ((DeclTableModel)this).getSchemaDoc().insertDeclaration(var7, (BaseDeclaration)null);
- }
-
- AttrTypeUndoable var12 = new AttrTypeUndoable(this, var4, var1);
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var12);
- ((BaseEdit)var12).doCommand();
- break;
- case 5:
- AttrOptionsUndoable var8 = new AttrOptionsUndoable(this, var4, var1);
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var8);
- ((BaseEdit)var8).doCommand();
- break;
- case 6:
- AttrDefaultUndoable var9 = new AttrDefaultUndoable(this, var4, var1);
- if (((String)var1).length() != 0 || var4.getDefault() != null) {
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var9);
- }
-
- ((BaseEdit)var9).doCommand();
- break;
- case 7:
- AttrRequiredUndoable var10 = new AttrRequiredUndoable(this, var4, var1);
- ((DeclTableModel)this).getSchemaDoc().getUndoManager().addEdit(var10);
- ((BaseEdit)var10).doCommand();
- break;
- default:
- super.setValueAt(var1, var2, var3);
- }
-
- }
- }
-
- public BaseDeclaration createDeclaration(String var1) {
- return new AggregateAttributeDecl(new AttributeDeclaration(var1));
- }
-
- public Object getQlickerData(String var1, Object var2) {
- if (var1.equals("TYPES")) {
- DataTypeEnumeration var4 = ((DeclTableModel)this).getSchemaDoc().getSchema().getAllTypes();
- return new 1(var4, this);
- } else if (var1.equals("AUTO_COMPLETE_DATA")) {
- String var3 = (String)var2;
- return DTDUtilities.isPEName(var3) ? super.doc.getAttrGroupPENames() : super.doc.getDeclNames(Class.forName("com.extensibility.xml.ElementDeclaration"), false);
- } else {
- Debug.assert(false, String.valueOf("Unknown getData key: ").concat(String.valueOf(var1)));
- return "";
- }
- }
-
- public int getRowForDecl(BaseDeclaration var1) throws IllegalArgumentException {
- if (var1 == null) {
- return -1;
- } else if (var1 instanceof AggregateAttributeDecl) {
- return this.getRowForDecl(((AggregateAttributeDecl)var1).getFirst());
- } else {
- if (var1 instanceof AttributeDeclaration) {
- for(int var2 = 0; var2 < super.declarations.size(); ++var2) {
- if (this.getAggregate(var2).contains((AttributeDeclaration)var1)) {
- return var2;
- }
- }
- }
-
- return -1;
- }
- }
-
- public void declarationRemoved(SchemaDocEvent var1) {
- BaseDeclaration var2 = var1.getDeclaration();
- int var3 = this.getRowForDecl(var2);
- if (var2 instanceof AggregateAttributeDecl) {
- super.declarations.removeElementAt(var3);
- ((AbstractTableModel)this).fireTableRowsDeleted(var3, var3);
- } else {
- if (!(var2 instanceof AttributeDeclaration)) {
- return;
- }
-
- AggregateAttributeDecl var4 = (AggregateAttributeDecl)((DeclTableModel)this).getDeclaration(var3);
- var4.removeAttribute((AttributeDeclaration)var2);
- if (!var4.getAttributes().hasMoreElements()) {
- super.declarations.removeElementAt(var3);
- ((AbstractTableModel)this).fireTableRowsDeleted(var3, var3);
- } else {
- ((AbstractTableModel)this).fireTableRowsUpdated(var3, var3);
- }
- }
-
- }
-
- protected int getAggregationMethod() {
- return ((DeclTableModel)this).getSchemaDoc().getSchema().isSupported("GESTALT_GLOBAL_ATTRS") ? 1 : 2;
- }
-
- public void flavorChanged(SchemaDocEvent var1) {
- super.flavorChanged(var1);
- ((DeclTableModel)this).updateFromSchema((BaseDeclaration)null);
- }
-
- public void declarationChanged(SchemaDocEvent var1, DeclarationChangeEvent var2) {
- super.declarationChanged(var1, var2);
- if (((EventObject)var2).getSource() instanceof AttributeDeclaration.Owner && var2.getWhich() == 1) {
- for(int var3 = 0; var3 < super.declarations.size(); ++var3) {
- AggregateAttributeDecl var4 = (AggregateAttributeDecl)super.declarations.elementAt(var3);
- if (var4.contains((AttributeDeclaration.Owner)((EventObject)var2).getSource())) {
- ((DeclTableModel)this).updateRow(var4);
- }
- }
- }
-
- if (((EventObject)var2).getSource() instanceof AttributeDeclaration) {
- AggregateAttributeDecl var5 = (AggregateAttributeDecl)((DeclTableModel)this).getDeclaration(this.getRowForDecl((AttributeDeclaration)((EventObject)var2).getSource()));
- if (var5 != null) {
- ((DeclTableModel)this).updateRow(var5);
- }
- }
-
- }
-
- public void declarationInserted(SchemaDocEvent var1) {
- BaseDeclaration var2 = var1.getDeclaration();
- if (var2 instanceof AggregateAttributeDecl) {
- super.declarations.addElement(var2);
- ((AbstractTableModel)this).fireTableRowsInserted(super.declarations.size() - 1, super.declarations.size() - 1);
- } else {
- if (!(var2 instanceof AttributeDeclaration)) {
- return;
- }
-
- AttributeDeclaration var3 = (AttributeDeclaration)var2;
- if (this.getAggregationMethod() == 2) {
- Enumeration var7 = super.declarations.elements();
-
- for(int var9 = 0; var7.hasMoreElements(); ++var9) {
- AggregateAttributeDecl var6 = (AggregateAttributeDecl)var7.nextElement();
- if (var6.compareTo(var3) == 0) {
- var6.addAttribute(var3);
- ((AbstractTableModel)this).fireTableRowsUpdated(var9, var9);
- return;
- }
- }
- } else if (!var3.isGlobal() && var3.isReference()) {
- int var4 = this.getRowForDecl(var3.getReferent(((DeclTableModel)this).getSchemaDoc().getSchema()));
- AggregateAttributeDecl var5 = (AggregateAttributeDecl)((DeclTableModel)this).getDeclaration(var4);
- var5.addAttribute(var3);
- ((AbstractTableModel)this).fireTableRowsUpdated(var4, var4);
- return;
- }
-
- AggregateAttributeDecl var8 = new AggregateAttributeDecl(var3);
- super.declarations.addElement(var8);
- int var10 = super.declarations.size();
- ((AbstractTableModel)this).fireTableRowsInserted(var10, var10);
- }
-
- }
-
- protected BaseDeclaration getDeclaration(int var1, int var2, String var3) {
- Object var4 = null;
- if (var2 == 3) {
- if (DTDUtilities.isPEName(var3)) {
- var3 = DTDUtilities.convertPEName(var3, false);
- var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.InternalPEDeclaration"));
- } else {
- var4 = ((DeclTableModel)this).getSchemaDoc().getNamedElement(var3);
- }
- } else if (var2 == 6) {
- if (DTDUtilities.isGEName(var3)) {
- var3 = DTDUtilities.convertGEName(var3, false);
- var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.GeneralEntityDeclaration"));
- }
- } else if (var2 == 4) {
- var4 = ((DeclTableModel)this).getSchemaDoc().getNamedDeclaration(var3, Class.forName("com.extensibility.xml.DataTypeDeclaration"));
- }
-
- return (BaseDeclaration)var4;
- }
-
- public int cullAttribute(AggregateAttributeDecl var1, String var2) {
- int var3 = super.getRowForDecl(var1);
- AttributeDeclaration var4 = var1.remove(var2);
- AggregateAttributeDecl var5 = new AggregateAttributeDecl(var4);
- super.declarations.insertElementAt(var5, var3);
- ((AbstractTableModel)this).fireTableRowsInserted(var3, var3);
- return var3;
- }
- }
-