package org.insightech.er.editor.model.diagram_contents.element.node.table; import java.util.ArrayList; import java.util.List; import org.insightech.er.editor.model.ERDiagram; import org.insightech.er.editor.model.diagram_contents.element.connection.ConnectionElement; import org.insightech.er.editor.model.diagram_contents.element.connection.Relation; import org.insightech.er.editor.model.diagram_contents.element.node.Location; import org.insightech.er.editor.model.diagram_contents.element.node.NodeElement; import org.insightech.er.editor.model.diagram_contents.element.node.ermodel.ERModel; import org.insightech.er.editor.model.diagram_contents.element.node.note.Note; import org.insightech.er.editor.model.diagram_contents.element.node.table.column.Column; import org.insightech.er.editor.model.diagram_contents.element.node.table.column.NormalColumn; import org.insightech.er.editor.model.diagram_contents.element.node.table.index.Index; import org.insightech.er.editor.model.diagram_contents.element.node.table.properties.TableViewProperties; import org.insightech.er.editor.model.diagram_contents.element.node.table.unique_key.ComplexUniqueKey; /** * �_�C�A�O�����iERModel�j���ɒ�`���ꂽ���z�e�[�u���ł��B * @author iwami */ public class ERVirtualTable extends ERTable { /** �e���f�� */ private ERModel model; /** �e�[�u������ */ private ERTable rawTable; @Override public void setLocation(Location location) { // TODO Auto-generated method stub super.setLocation(location); } public ERVirtualTable(ERModel model, ERTable rawTable) { super(); this.model = model; this.rawTable = rawTable; // setDiagram(rawTable.getDiagram()); // this.tableViewProperties = DBManagerFactory.getDBManager( // this.getDiagram()).createTableProperties( // (TableProperties) this.tableViewProperties); // // Dictionary dictionary = this.getDiagram().getDiagramContents() // .getDictionary(); // // setPhysicalName(rawTable.getPhysicalName()); // setLogicalName(this.getLogicalName()); // setDescription(this.getDescription()); // // for (NormalColumn toColumn : to.getNormalColumns()) { // dictionary.remove(toColumn); // } // // List<Column> columns = new ArrayList<Column>(); // // List<NormalColumn> newPrimaryKeyColumns = new ArrayList<NormalColumn>(); // // for (Column fromColumn : this.getColumns()) { // if (fromColumn instanceof NormalColumn) { // CopyColumn copyColumn = (CopyColumn) fromColumn; // // CopyWord copyWord = copyColumn.getWord(); // if (copyColumn.isForeignKey()) { // copyWord = null; // } // // if (copyWord != null) { // Word originalWord = copyColumn.getOriginalWord(); // dictionary.copyTo(copyWord, originalWord); // } // // NormalColumn restructuredColumn = copyColumn // .getRestructuredColumn(); // // restructuredColumn.setColumnHolder(this); // if (copyWord == null) { // restructuredColumn.setWord(null); // } // columns.add(restructuredColumn); // // if (restructuredColumn.isPrimaryKey()) { // newPrimaryKeyColumns.add(restructuredColumn); // } // // dictionary.add(restructuredColumn); // // } else { // columns.add(fromColumn); // } // } // // this.setTargetTableRelation(to, newPrimaryKeyColumns); // // to.setColumns(columns); // rawTable.copyTableViewData(this).restructureData(this); // rawTable.clone().restructureData(this); // rawTable.restructureData(this); // restructureData(rawTable); } // ---------------------------------------------------------------- Delegete Methods @Override public void setFontSize(int fontSize) { // TODO Auto-generated method stub super.setFontSize(fontSize); } @Override public int getFontSize() { // TODO Auto-generated method stub return super.getFontSize(); } // @Override // public int getFontSize() { // if (super.getFontSize() == 0) { // return super.getFontSize(); // } // return rawTable.getFontSize(); // } // // @Override // public String getFontName() { // if (super.getFontName() == null) { // return super.getFontName(); // } // return rawTable.getFontName(); // } @Override public void setColor(int red, int green, int blue) { rawTable.setColor(red, green, blue); } @Override public int[] getColor() { return rawTable.getColor(); } @Override public ERDiagram getDiagram() { return rawTable.getDiagram(); } public void setPoint(int x, int y) { this.setLocation(new Location(x, y, getWidth(), getHeight())); } // @Override // public int getX() { // return rawTable.getX(); // } // // @Override // public int getY() { // return rawTable.getY(); // } @Override public int getWidth() { return rawTable.getWidth(); } @Override public int getHeight() { return rawTable.getHeight(); } @Override public List<ConnectionElement> getIncomings() { System.out.println("ERVirtualTable::getIncomings"); List<ConnectionElement> elements = new ArrayList<ConnectionElement>(); List<ERVirtualTable> modelTables = model.getTables(); for (ConnectionElement el : rawTable.getIncomings()) { NodeElement findEl = el.getSource(); if (findEl instanceof Note) { if (((Note)findEl).getModel().equals(model)) { elements.add(el); } // elements.add(el); } else { for (ERVirtualTable vtable : modelTables) { if (vtable.getRawTable().equals(findEl)) { elements.add(el); break; } } } } return elements; } @Override public List<ConnectionElement> getOutgoings() { List<ConnectionElement> elements = new ArrayList<ConnectionElement>(); List<ERVirtualTable> modelTables = model.getTables(); for (ConnectionElement el : rawTable.getOutgoings()) { NodeElement findEl = el.getTarget(); if (findEl instanceof Note) { if (((Note)findEl).getModel().equals(model)) { elements.add(el); } elements.add(el); } else { for (ERVirtualTable vtable : modelTables) { if (vtable.getRawTable().equals(findEl)) { elements.add(el); break; } } } } return elements; } @Override public NormalColumn getAutoIncrementColumn() { return rawTable.getAutoIncrementColumn(); } @Override public TableViewProperties getTableViewProperties() { return rawTable.getTableViewProperties(); } @Override public String getPhysicalName() { return rawTable.getPhysicalName(); } @Override public List<NodeElement> getReferringElementList() { return rawTable.getReferringElementList(); } @Override public TableViewProperties getTableViewProperties(String database) { return rawTable.getTableViewProperties(database); } @Override public String getLogicalName() { return rawTable.getLogicalName(); } @Override public List<NodeElement> getReferedElementList() { return rawTable.getReferedElementList(); } @Override public String getName() { return rawTable.getName(); } @Override public String getDescription() { return rawTable.getDescription(); } @Override public List<Column> getColumns() { return rawTable.getColumns(); } @Override public List<NormalColumn> getExpandedColumns() { return rawTable.getExpandedColumns(); } @Override public List<Relation> getIncomingRelations() { List<Relation> elements = new ArrayList<Relation>(); List<ERVirtualTable> modelTables = model.getTables(); for (Relation el : rawTable.getIncomingRelations()) { NodeElement findEl = el.getSource(); for (ERVirtualTable vtable : modelTables) { if (vtable.getRawTable().equals(findEl)) { elements.add(el); break; } } } return elements; // return rawTable.getIncomingRelations(); } @Override public List<Relation> getOutgoingRelations() { List<Relation> elements = new ArrayList<Relation>(); List<ERVirtualTable> modelTables = model.getTables(); for (Relation el : rawTable.getOutgoingRelations()) { NodeElement findEl = el.getSource(); for (ERVirtualTable vtable : modelTables) { if (vtable.getRawTable().equals(findEl)) { elements.add(el); break; } } } return elements; // return rawTable.getOutgoingRelations(); } @Override public List<NormalColumn> getNormalColumns() { return rawTable.getNormalColumns(); } @Override public int getPrimaryKeySize() { return rawTable.getPrimaryKeySize(); } @Override public Column getColumn(int index) { return rawTable.getColumn(index); } @Override public List<NormalColumn> getPrimaryKeys() { return rawTable.getPrimaryKeys(); } @Override public Index getIndex(int index) { return rawTable.getIndex(index); } @Override public List<Index> getIndexes() { return rawTable.getIndexes(); } @Override public List<ComplexUniqueKey> getComplexUniqueKeyList() { return rawTable.getComplexUniqueKeyList(); } @Override public String getConstraint() { return rawTable.getConstraint(); } @Override public String getPrimaryKeyName() { return rawTable.getPrimaryKeyName(); } @Override public String getOption() { return rawTable.getOption(); } @Override public String getNameWithSchema(String database) { return rawTable.getNameWithSchema(database); } /** * �e�[�u�����̂��擾���܂��B * @return �e�[�u������ */ public ERTable getRawTable() { return rawTable; } /** * �e�[�u�����̂�ݒ肵�܂��B * @param rawTable �e�[�u������ */ public void setRawTable(ERTable rawTable) { this.rawTable = rawTable; } @Override public String getObjectType() { return "vtable"; } /** * �e�[�u�����̂��X�V�����Ƃ��ɌĂ΂�܂��B */ public void doChangeTable() { firePropertyChange(PROPERTY_CHANGE_COLUMNS, null, null); } }