package org.insightech.er.editor.model.dbexport.ddl.validator.rule.all; import java.util.HashSet; import java.util.Set; import org.eclipse.core.resources.IMarker; import org.insightech.er.ResourceString; import org.insightech.er.editor.model.ERDiagram; import org.insightech.er.editor.model.dbexport.ddl.validator.ValidateResult; import org.insightech.er.editor.model.dbexport.ddl.validator.rule.BaseRule; import org.insightech.er.editor.model.diagram_contents.element.node.table.ERTable; import org.insightech.er.editor.model.diagram_contents.element.node.table.index.Index; import org.insightech.er.editor.model.diagram_contents.element.node.view.View; import org.insightech.er.editor.model.diagram_contents.not_element.sequence.Sequence; import org.insightech.er.editor.model.diagram_contents.not_element.trigger.Trigger; public class DuplicatedLogicalNameRule extends BaseRule { public boolean validate(ERDiagram diagram) { Set<String> nameSet = new HashSet<String>(); for (ERTable table : diagram.getDiagramContents().getContents() .getTableSet()) { String name = table.getLogicalName().toLowerCase(); if (nameSet.contains(name)) { ValidateResult validateResult = new ValidateResult(); validateResult.setMessage(ResourceString .getResourceString("error.validate.duplicated.name") + " [" + table.getObjectType().toUpperCase() + "] " + name); validateResult.setLocation(table.getLogicalName()); validateResult.setSeverity(IMarker.SEVERITY_WARNING); validateResult.setObject(table); this.addError(validateResult); } nameSet.add(name); for (Index index : table.getIndexes()) { String indexName = index.getName().toLowerCase(); if (nameSet.contains(indexName)) { ValidateResult validateResult = new ValidateResult(); validateResult .setMessage(ResourceString .getResourceString("error.validate.duplicated.name") + " [INDEX] " + indexName + " (" + table.getLogicalName() + ")"); validateResult.setLocation(indexName); validateResult.setSeverity(IMarker.SEVERITY_WARNING); validateResult.setObject(index); this.addError(validateResult); } nameSet.add(indexName); } } for (Sequence sequence : diagram.getDiagramContents().getSequenceSet()) { String name = sequence.getName().toLowerCase(); if (nameSet.contains(name)) { ValidateResult validateResult = new ValidateResult(); validateResult.setMessage(ResourceString .getResourceString("error.validate.duplicated.name") + " [SEQUENCE] " + name); validateResult.setLocation(name); validateResult.setSeverity(IMarker.SEVERITY_WARNING); validateResult.setObject(sequence); this.addError(validateResult); } nameSet.add(name); } for (View view : diagram.getDiagramContents().getContents() .getViewSet()) { String name = view.getName().toLowerCase(); if (nameSet.contains(name)) { ValidateResult validateResult = new ValidateResult(); validateResult.setMessage(ResourceString .getResourceString("error.validate.duplicated.name") + " [VIEW] " + name); validateResult.setLocation(name); validateResult.setSeverity(IMarker.SEVERITY_WARNING); validateResult.setObject(view); this.addError(validateResult); } nameSet.add(name); } for (Trigger trigger : diagram.getDiagramContents().getTriggerSet()) { String name = trigger.getName().toLowerCase(); if (nameSet.contains(name)) { ValidateResult validateResult = new ValidateResult(); validateResult.setMessage(ResourceString .getResourceString("error.validate.duplicated.name") + " [TRIGGER] " + name); validateResult.setLocation(name); validateResult.setSeverity(IMarker.SEVERITY_WARNING); validateResult.setObject(trigger); this.addError(validateResult); } nameSet.add(name); } return true; } }