use of org.eclipse.xsd.XSDIdentityConstraintDefinition in project tmdm-studio-se by Talend.
the class XSDEditParticleAction method doAction.
@Override
public IStatus doAction() {
try {
IStructuredSelection selection = (IStructuredSelection) page.getTreeViewer().getSelection();
String originalXpath = getOriginalXpath();
// $NON-NLS-1$
String entity = originalXpath.substring(0, originalXpath.indexOf("/"));
selParticle = (XSDParticle) selection.getFirstElement();
if (!(selParticle.getTerm() instanceof XSDElementDeclaration)) {
return Status.CANCEL_STATUS;
}
XSDElementDeclaration decl = (XSDElementDeclaration) selParticle.getContent();
XSDElementDeclaration ref = null;
if (decl.isElementDeclarationReference()) {
// it is a ref
ref = decl.getResolvedElementDeclaration();
}
EList eDecls = decl.getSchema().getElementDeclarations();
ArrayList<String> elementDeclarations = new ArrayList<String>();
for (Iterator iter = eDecls.iterator(); iter.hasNext(); ) {
XSDElementDeclaration d = (XSDElementDeclaration) iter.next();
if (d.getTargetNamespace() != null && d.getTargetNamespace().equals(IConstants.DEFAULT_NAME_SPACE)) {
continue;
}
if (!d.getQName().equals(entity)) {
elementDeclarations.add(// $NON-NLS-1$ //$NON-NLS-2$
d.getQName() + (d.getTargetNamespace() != null ? " : " + d.getTargetNamespace() : ""));
}
}
// $NON-NLS-1$
elementDeclarations.add("");
XSDIdentityConstraintDefinition identify = null;
XSDXPathDefinition keyPath = null;
List<Object> keyInfo = Util.getKeyInfo(decl);
boolean isPK = false;
if (keyInfo != null && keyInfo.size() > 0) {
identify = (XSDIdentityConstraintDefinition) keyInfo.get(0);
keyPath = (XSDXPathDefinition) keyInfo.get(1);
isPK = true;
}
initEleName = decl.getName();
dialog = new BusinessElementInputDialog(this, page.getSite().getShell(), Messages.XSDEditParticleAction_InputDialogTitle, decl.getName(), ref == null ? null : ref.getQName(), elementDeclarations, selParticle.getMinOccurs(), selParticle.getMaxOccurs(), false, isPK);
dialog.setBlockOnOpen(true);
int ret = dialog.open();
if (ret == Window.CANCEL) {
return Status.CANCEL_STATUS;
}
if (keyPath != null) {
identify.getFields().remove(keyPath);
}
// find reference
XSDElementDeclaration newRef = null;
if (!"".equals(refName.trim())) {
// $NON-NLS-1$
newRef = Util.findReference(refName, schema);
if (newRef == null) {
MessageDialog.openError(this.page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDEditParticleAction_ErrorMsg, refName));
return Status.CANCEL_STATUS;
}
}
// ref
// update validation rule
Set<String> paths = new HashSet<String>();
Util.collectElementPaths((IStructuredContentProvider) page.getElementsViewer().getContentProvider(), page.getSite(), selParticle, paths, null);
//
// $NON-NLS-1$
decl.setName("".equals(this.elementName) ? null : this.elementName);
if (keyPath != null) {
XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
XSDXPathDefinition field = factory.createXSDXPathDefinition();
field.setVariety(keyPath.getVariety());
field.setValue(elementName);
identify.getFields().add(field);
}
if (newRef != null) {
decl.setResolvedElementDeclaration(newRef);
decl.setTypeDefinition(null);
Element elem = decl.getElement();
if (elem.getAttributes().getNamedItem("type") != null) {
// $NON-NLS-1$
elem.getAttributes().removeNamedItem("type");
}
decl.updateElement();
} else if (ref != null) {
// fliu
// no more element declarations --> we create a new Declaration with String simpleType definition
// instead
// FIXME: dereferecning and element is buggy
XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
XSDElementDeclaration newD = factory.createXSDElementDeclaration();
newD.setName(this.elementName);
newD.updateElement();
XSDSimpleTypeDefinition stringType = ((SchemaTreeContentProvider) page.getTreeViewer().getContentProvider()).getXsdSchema().getSchemaForSchema().resolveSimpleTypeDefinition(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001, // $NON-NLS-1$
"string");
newD.setTypeDefinition(stringType);
if (selParticle.getContainer() instanceof XSDModelGroup) {
XSDModelGroup group = ((XSDModelGroup) selParticle.getContainer());
((XSDModelGroup) selParticle.getContainer()).getContents().remove(selParticle);
selParticle = factory.createXSDParticle();
selParticle.setContent(newD);
group.getContents().add(selParticle);
}
}
if (Util.changeElementTypeToSequence(decl, maxOccurs) == Status.CANCEL_STATUS) {
return Status.CANCEL_STATUS;
}
selParticle.setMinOccurs(this.minOccurs);
if (maxOccurs > -1) {
selParticle.setMaxOccurs(this.maxOccurs);
} else {
if (selParticle.getElement().getAttributeNode("maxOccurs") != null) {
// $NON-NLS-1$//$NON-NLS-2$
selParticle.getElement().getAttributeNode("maxOccurs").setNodeValue("unbounded");
} else {
// $NON-NLS-1$//$NON-NLS-2$
selParticle.getElement().setAttribute("maxOccurs", "unbounded");
}
}
selParticle.updateElement();
updateReference(originalXpath);
if (elementExAdapter != null) {
elementExAdapter.renameElement(decl.getSchema(), paths, decl.getName());
}
if (mapinfoExAdapter != null) {
mapinfoExAdapter.renameElementMapinfo(paths, decl.getName());
}
page.refresh();
page.markDirty();
} catch (Exception e) {
log.error(e.getMessage(), e);
MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDEditParticleAction_ErrorMsg1, e.getLocalizedMessage()));
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
use of org.eclipse.xsd.XSDIdentityConstraintDefinition in project tmdm-studio-se by Talend.
the class XSDChangeToSimpleTypeAction method doAction.
@Override
public IStatus doAction() {
try {
XSDElementDeclaration decl = null;
IStructuredSelection selection = (IStructuredSelection) page.getTreeViewer().getSelection();
// declNew is the new created one not the selected one in tree vew
if (declNew != null) {
decl = declNew;
} else if (selection.getFirstElement() instanceof XSDElementDeclaration) {
isConcept = true;
decl = (XSDElementDeclaration) selection.getFirstElement();
} else {
isConcept = false;
if (selection.getFirstElement() != null) {
decl = (XSDElementDeclaration) ((XSDParticle) selection.getFirstElement()).getTerm();
}
}
// build list of custom types and built in types
List<String> customTypes = new ArrayList<String>();
for (XSDTypeDefinition type : schema.getTypeDefinitions()) {
if (type instanceof XSDSimpleTypeDefinition) {
if (type.getTargetNamespace() != null && !type.getTargetNamespace().equals(XSDConstants.SCHEMA_FOR_SCHEMA_URI_2001) || type.getTargetNamespace() == null) {
customTypes.add(type.getName());
}
}
}
List<String> builtInTypes = XSDUtil.getBuiltInTypes();
if (showDlg) {
String name = decl.getTypeDefinition().getName();
if (decl.getTypeDefinition() instanceof XSDComplexTypeDefinition) {
name = null;
boolean confirm = MessageDialog.openConfirm(page.getSite().getShell(), Messages.Warning, Messages.XSDChangeToCXX_ChangeToAnotherTypeWarning);
if (!confirm) {
return Status.CANCEL_STATUS;
}
}
dialog = new SimpleTypeInputDialog(this, page.getSite().getShell(), schema, Messages.XSDChangeToXX_DialogTitle, customTypes, builtInTypes, name);
dialog.setBlockOnOpen(true);
int ret = dialog.open();
if (ret == Window.CANCEL) {
return Status.CANCEL_STATUS;
}
}
// remove all unique keys and make new one
if (isConcept) {
// remove exisitng unique key(s)
ArrayList keys = new ArrayList();
EList list = decl.getIdentityConstraintDefinitions();
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
XSDIdentityConstraintDefinition icd = (XSDIdentityConstraintDefinition) iter.next();
if (icd.getIdentityConstraintCategory().equals(XSDIdentityConstraintCategory.UNIQUE_LITERAL)) {
keys.add(icd);
}
}
decl.getIdentityConstraintDefinitions().removeAll(keys);
// add new unique Key
XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
XSDIdentityConstraintDefinition uniqueKey = factory.createXSDIdentityConstraintDefinition();
uniqueKey.setIdentityConstraintCategory(XSDIdentityConstraintCategory.UNIQUE_LITERAL);
uniqueKey.setName(decl.getName());
XSDXPathDefinition selector = factory.createXSDXPathDefinition();
selector.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
// $NON-NLS-1$
selector.setValue(".");
uniqueKey.setSelector(selector);
XSDXPathDefinition field = factory.createXSDXPathDefinition();
field.setVariety(XSDXPathVariety.FIELD_LITERAL);
// $NON-NLS-1$
field.setValue(".");
uniqueKey.getFields().add(field);
decl.getIdentityConstraintDefinitions().add(uniqueKey);
}
// Save current type definition
XSDTypeDefinition current = decl.getTypeDefinition();
// set new one
if (builtIn) {
decl.setTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), typeName));
} else {
// check if concept already exists
if (typeName != null && typeName.length() > 0) {
XSDSimpleTypeDefinition std = null;
// $NON-NLS-1$
String ns = "";
if (typeName.lastIndexOf(" : ") != -1) {
// $NON-NLS-1$
// $NON-NLS-1$
ns = typeName.substring(typeName.lastIndexOf(" : ") + 3);
// $NON-NLS-1$
typeName = typeName.substring(0, typeName.lastIndexOf(" : "));
}
for (XSDTypeDefinition typeDef : schema.getTypeDefinitions()) {
if (typeDef instanceof XSDSimpleTypeDefinition) {
if (typeDef.getName().equals(typeName)) {
std = (XSDSimpleTypeDefinition) typeDef;
break;
}
}
}
if (std == null) {
std = schema.resolveSimpleTypeDefinition(typeName);
std.setBaseTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), // $NON-NLS-1$
"string"));
if (typeName.equals(EUUIDCustomType.MULTI_LINGUAL.getName())) {
XSDPatternFacet f = XSDSchemaBuildingTools.getXSDFactory().createXSDPatternFacet();
// $NON-NLS-1$
f.setLexicalValue("(\\[\\w+\\:[^\\[\\]]*\\]){0,}");
std.getFacetContents().add(f);
}
schema.getContents().add(std);
}
decl.setTypeDefinition(std);
} else {
XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
simpleType = factory.createXSDSimpleTypeDefinition();
simpleType.setBaseTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), // $NON-NLS-1$
"string"));
decl.setAnonymousTypeDefinition(simpleType);
}
}
decl.updateElement();
// remove current if no more in use
// if (current != null) {
// if ( (current.getName()!=null) && //anonymous type
// (!schema.getSchemaForSchemaNamespace().equals(current.getTargetNamespace()))
// ){
// List eut =Util.findElementsUsingType(schema, current.getTargetNamespace(), current.getName());
// if (eut.size()==0)
// schema.getContents().remove(current);
// }
// }
declNew = null;
page.refresh();
page.markDirty();
} catch (Exception e) {
log.error(e.getMessage(), e);
MessageDialog.openError(page.getSite().getShell(), Messages._Error, Messages.bind(Messages.XSDChangeToXX_ErrorMsg1, e.getLocalizedMessage()));
return Status.CANCEL_STATUS;
}
return Status.OK_STATUS;
}
use of org.eclipse.xsd.XSDIdentityConstraintDefinition in project tmdm-studio-se by Talend.
the class DataModelMainPage method fillContextMenu.
protected void fillContextMenu(IMenuManager manager, boolean isType) {
IStructuredSelection selection;
if (!isType) {
selection = ((IStructuredSelection) viewer.getSelection());
} else {
selection = ((IStructuredSelection) typesViewer.getSelection());
}
Object[] selectedObjs = selection.toArray();
Object obj = selection.getFirstElement();
if (!isType) {
manager.add(newConceptAction);
} else {
manager.add(newComplexTypeAction);
manager.add(newSimpleTypeAction);
// add by ymli; fix the bug:0012228. Made the multiple types can be deleted.
XSDDeleteTypeDefinition deleteTypeDefinition1;
if (selectedObjs.length > 1) {
deleteTypeDefinition1 = new XSDDeleteTypeDefinition(this, true);
} else {
deleteTypeDefinition1 = new XSDDeleteTypeDefinition(this, false);
}
if (selectedObjs.length >= 1 && deleteTypeDefinition1.isTypeDefinition(selectedObjs)) {
manager.add(deleteTypeDefinition1);
}
deleteConceptWrapAction.regisExtraClassToDel(XSDComplexTypeDefinitionImpl.class);
if (selectedObjs.length > 1 && deleteConceptWrapAction.checkInDeletableType(selectedObjs)) {
deleteConceptWrapAction.prepareToDelSelectedItems(selection, viewer);
}
if (selectedObjs.length > 1 && deleteConceptWrapAction.outPutDeleteActions() != null) {
manager.add(deleteConceptWrapAction.outPutDeleteActions());
if (deleteConceptWrapAction.checkOutAllConcept(selectedObjs)) {
manager.add(newBrowseItemAction);
}
}
if (exAdapter != null && obj instanceof XSDComplexTypeDefinition && selectedObjs.length == 1) {
exAdapter.fillContextMenu(manager);
}
}
manager.add(new Separator());
if (!isType && ((selection == null) || (selection.getFirstElement() == null))) {
if (WorkbenchClipboard.getWorkbenchClipboard().getConcepts().size() > 0) {
manager.add(new Separator(ADDITIONMENUID));
// add by ymli, fix bug 0009770
// $NON-NLS-1$
String title = "";
if (WorkbenchClipboard.getWorkbenchClipboard().getConcepts().size() == 1) {
title = Messages.PasteEntityText;
} else if (WorkbenchClipboard.getWorkbenchClipboard().getConcepts().size() > 1) {
title = Messages.PasteEntitiesText;
}
XSDPasteConceptAction pasteConceptAction = new XSDPasteConceptAction(this, title);
if (pasteConceptAction.checkInPasteType()) {
manager.add(new Separator());
manager.add(pasteConceptAction);
}
}
return;
}
// Element Declaration
if (obj instanceof XSDElementDeclaration && selectedObjs.length == 1) {
// check if concept or "just" element
XSDElementDeclaration decl = (XSDElementDeclaration) obj;
boolean isConcept = Util.checkConcept(decl);
if (!Util.IsAImporedElement(decl, xsdSchema)) {
if (isConcept) {
manager.add(editConceptAction);
manager.add(deleteConceptAction);
manager.add(newBrowseItemAction);
} else {
manager.add(editElementAction);
manager.add(deleteElementAction);
}
// add by ymli. fix bug 0009770 add the copy of concepts
copyConceptAction.setText(Messages.CopyEntityText);
if (Util.checkInCopy(selectedObjs)) {
manager.add(new Separator());
manager.add(copyConceptAction);
}
/*
* boolean isMulti = false; if(WorkbenchClipboard.getWorkbenchClipboard().getConcepts().size()>1)
* isMulti = true;
*/
// $NON-NLS-1$
String title = "";
if (WorkbenchClipboard.getWorkbenchClipboard().getConcepts().size() > 1) {
title = Messages.PasteEntitiesText;
} else if (WorkbenchClipboard.getWorkbenchClipboard().getConcepts().size() == 1) {
title = Messages.PasteEntityText;
} else if (WorkbenchClipboard.getWorkbenchClipboard().getParticles().size() > 1) {
title = Messages.PasteElementsText;
} else if (WorkbenchClipboard.getWorkbenchClipboard().getParticles().size() == 1) {
title = Messages.PasteElement;
}
XSDPasteConceptAction pasteConceptAction = new XSDPasteConceptAction(this, title);
if (pasteConceptAction.checkInPasteType()) {
manager.add(pasteConceptAction);
}
manager.add(new Separator());
manager.add(newElementAction);
manager.add(new Separator());
manager.add(changeToComplexTypeAction);
manager.add(changeToSimpleTypeAction);
// add by fliu, see bugID:0009157
if (((XSDElementDeclaration) obj).getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
manager.add(setFacetMsgAction);
manager.add(setAnnotationDisplayFomatAction);
}
manager.add(new Separator());
manager.add(newIdentityConstraintAction);
} else {
if (isConcept) {
manager.add(newBrowseItemAction);
}
manager.add(newElementAction);
}
// Annotations
if (!Util.IsAImporedElement(decl, xsdSchema) || !Util.IsAImporedElement(decl.getTypeDefinition(), xsdSchema)) {
setAnnotationActions2(obj, manager);
}
}
// add by rhou.fix bug 0012073: Enable to create element from sub element group
if (obj instanceof XSDModelGroup) {
manager.add(new Separator());
manager.add(getAddElementMenuForTypeClass(XSDModelGroup.class, Messages._AddElement));
manager.add(new Separator());
manager.add(changeSubElementGroupAction);
manager.add(new Separator());
manager.add(setAnnotationLabelAction);
addPasteElementAction(manager);
}
if (obj instanceof XSDAttributeUse && selectedObjs.length == 1) {
manager.add(deleteAttributeAction);
}
if (obj instanceof XSDAttributeDeclaration && selectedObjs.length == 1) {
manager.add(deleteAttributeAction);
}
if (obj instanceof XSDParticle && selectedObjs.length == 1) {
XSDTerm term = ((XSDParticle) obj).getTerm();
if (!(term instanceof XSDWildcard)) {
if (term instanceof XSDElementDeclaration) {
manager.add(editParticleAction);
if (!Util.IsAImporedElement(term, xsdSchema) || term.getContainer() instanceof XSDSchema) {
manager.add(getAddElementMenuForTypeClass(XSDParticle.class, Messages._AddElementAfter));
if (term instanceof XSDModelGroup) {
manager.add(getAddElementMenuForTypeClass(XSDModelGroup.class, Messages._AddElement));
manager.add(newGroupFromTypeAction);
}
manager.add(deleteParticleAction);
// edit by ymli. fix the bug:0011523
copyConceptAction.setText(Messages.CopyElementText);
manager.add(copyConceptAction);
if (((XSDElementDeclaration) term).getTypeDefinition() instanceof XSDComplexTypeDefinition) {
addPasteElementAction(manager);
}
manager.add(new Separator());
manager.add(changeToComplexTypeAction);
manager.add(changeToSimpleTypeAction);
// add by fliu, see bugID:0009157
manager.add(new Separator());
// Annotations
XSDTypeDefinition type = ((XSDElementDeclaration) term).getTypeDefinition();
setAnnotationActions(obj, manager);
if (((XSDElementDeclaration) term).getTypeDefinition() instanceof XSDSimpleTypeDefinition) {
manager.add(setFacetMsgAction);
manager.add(setAnnotationDisplayFomatAction);
}
// Xpath
manager.add(new Separator());
manager.add(getXPathAction);
}
}
}
}
if (obj instanceof XSDComplexTypeDefinition && selectedObjs.length == 1 && ((XSDComplexTypeDefinition) obj).getTargetNamespace() == null) {
if (!isType && !Util.IsAImporedElement((XSDParticle) obj, xsdSchema)) {
manager.add(getAddElementMenuForTypeClass(XSDComplexTypeDefinition.class, Messages._AddElement));
manager.add(newGroupFromTypeAction);
}
if (!Util.IsAImporedElement((XSDComplexTypeDefinition) obj, xsdSchema)) {
// add by rhou.fix bug 0012073: Enable to create element from sub element group
manager.add(new Separator());
manager.add(getAddElementMenuForTypeClass(XSDComplexTypeDefinition.class, Messages._AddElement));
manager.add(new Separator());
manager.add(editComplexTypeAction);
}
manager.add(setAnnotationLabelAction);
addPasteElementAction(manager);
}
if (obj instanceof XSDIdentityConstraintDefinition && selectedObjs.length == 1 && ((XSDIdentityConstraintDefinition) obj).getTargetNamespace() == null && !Util.IsAImporedElement((XSDIdentityConstraintDefinition) obj, xsdSchema)) {
manager.add(deleteIdentityConstraintAction);
manager.add(new Separator());
manager.add(newXPathAction);
}
if (obj instanceof XSDXPathDefinition && selectedObjs.length == 1 && ((XSDXPathDefinition) obj).getSchema().getTargetNamespace() == null && !Util.IsAImporedElement((XSDXPathDefinition) obj, xsdSchema)) {
manager.add(editXPathAction);
manager.add(newXPathAction);
XSDXPathDefinition xpath = (XSDXPathDefinition) obj;
if (xpath.getVariety().equals(XSDXPathVariety.FIELD_LITERAL)) {
manager.add(deleteXPathAction);
}
}
// for the anonymous simpleType
if (obj instanceof XSDSimpleTypeDefinition && selectedObjs.length == 1 && (!Util.IsAImporedElement((XSDSimpleTypeDefinition) obj, xsdSchema) || ((XSDSimpleTypeDefinition) obj).getName() == null)) {
XSDSimpleTypeDefinition typedef = (XSDSimpleTypeDefinition) obj;
manager.add(changeBaseTypeAction);
manager.add(new Separator());
if (typedef.getBaseTypeDefinition() != null) {
EList list = typedef.getBaseTypeDefinition().getValidFacets();
for (Iterator iter = list.iterator(); iter.hasNext(); ) {
String element = (String) iter.next();
manager.add(new XSDEditFacetAction(this, element));
}
}
}
if (selectedObjs.length > 1 && deleteConceptWrapAction.checkInDeletableType(selectedObjs)) {
deleteConceptWrapAction.prepareToDelSelectedItems(selection, viewer);
}
if (selectedObjs.length > 1 && deleteConceptWrapAction.checkInAllElementType(selectedObjs)) {
manager.add(newBrowseItemAction);
}
if (selectedObjs.length > 1 && deleteConceptWrapAction.outPutDeleteActions() != null) {
if (!isType) {
manager.add(deleteConceptWrapAction.outPutDeleteActions());
}
// $NON-NLS-1$
String title = "";
if (Util.checkInCopyTypeElement(selectedObjs)) {
title = Messages.CopyEntitiesText;
} else if (Util.checkInCOpyTypeParticle(selectedObjs)) {
title = Messages.CopyElements;
}
copyConceptAction.setText(title);
if (Util.checkInCopy(selectedObjs)) {
manager.add(copyConceptAction);
}
// add by ymli; fix bug:0016645
if (selectedObjs.length > 1 && isXSDParticles(selectedObjs)) {
manager.add(getAddElementMenuForTypeClass(XSDParticle.class, Messages._AddElementAfter));
}
}
if (exAdapter != null) {
exAdapter.fillContextMenu(manager, selectedObjs);
}
// available models
java.util.List<IAvailableModel> availablemodels = AvailableModelUtil.getAvailableModels(isLocalInput());
for (int i = 0; i < availablemodels.size(); i++) {
IAvailableModel model = availablemodels.get(i);
model.fillContextMenu(obj, manager, this, dataModelName);
if (i == 1) {
manager.add(new Separator());
}
}
//
manager.add(new Separator());
drillDownAdapter.addNavigationActions(manager);
// Other plug-ins can contribute there actions here
manager.add(new Separator(ADDITIONMENUID));
deleteConceptWrapAction.clearExtraClassToDel();
}
use of org.eclipse.xsd.XSDIdentityConstraintDefinition in project tmdm-studio-se by Talend.
the class DataModelMainPage method getElementType.
private int getElementType(Object decl) {
if (Util.getParent(decl) == decl) {
if (Util.checkConcept((XSDElementDeclaration) decl)) {
return 0;
}
return 1;
}
if (decl instanceof XSDComplexTypeDefinition) {
return 2;
}
if (decl instanceof XSDIdentityConstraintDefinition) {
return 3;
}
if (decl instanceof XSDXPathDefinition) {
return 4;
}
if (decl instanceof XSDSimpleTypeDefinition) {
return 5;
}
if (decl instanceof XSDAnnotation) {
return 6;
}
if (decl instanceof XSDParticle) {
return 7;
}
if (decl instanceof XSDModelGroup) {
return 8;
}
if (decl instanceof XSDWhiteSpaceFacet) {
return 201;
}
if (decl instanceof XSDLengthFacet) {
return 202;
}
if (decl instanceof XSDMinLengthFacet) {
return 203;
}
if (decl instanceof XSDMaxLengthFacet) {
return 204;
}
if (decl instanceof XSDTotalDigitsFacet) {
return 205;
}
if (decl instanceof XSDFractionDigitsFacet) {
return 206;
}
if (decl instanceof XSDMaxInclusiveFacet) {
return 207;
}
if (decl instanceof XSDMaxExclusiveFacet) {
return 208;
}
if (decl instanceof XSDMinInclusiveFacet) {
return 209;
}
if (decl instanceof XSDMinExclusiveFacet) {
return 210;
}
if (decl instanceof XSDPatternFacet) {
return 211;
}
if (decl instanceof XSDEnumerationFacet) {
return 212;
}
if (decl instanceof Element) {
Element e = (Element) decl;
if (e.getLocalName().equals("appinfo")) {
// $NON-NLS-1$
}
// $NON-NLS-1$
String source = e.getAttribute("source");
if (source != null) {
if (source.startsWith("X_Label_")) {
// $NON-NLS-1$
return 101;
} else if (source.equals("X_ForeignKey")) {
// $NON-NLS-1$
return 102;
} else if (source.equals("X_ForeignKeyInfo")) {
// $NON-NLS-1$
return 103;
} else if (source.equals("X_SourceSystem")) {
// $NON-NLS-1$
return 104;
} else if (source.equals("X_TargetSystem")) {
// $NON-NLS-1$
return 105;
} else if (source.startsWith("X_Description_")) {
// $NON-NLS-1$
return 106;
} else if (source.equals("X_Write")) {
// $NON-NLS-1$
return 107;
} else if (source.equals("X_Hide")) {
// $NON-NLS-1$
return 108;
} else if (source.equals("X_Schematron")) {
// $NON-NLS-1$
return 109;
} else if (source.startsWith("X_Facet_")) {
// $NON-NLS-1$
return 110;
} else if (source.startsWith("X_Workflow")) {
// $NON-NLS-1$
return 111;
} else if (source.startsWith("X_ForeignKey_Filter")) {
// $NON-NLS-1$
return 112;
} else if (source.startsWith("X_Display_Format_")) {
// $NON-NLS-1$
return 113;
} else if (source.equals("X_Lookup_Field")) {
// $NON-NLS-1$
return 114;
} else if (source.equals("X_PrimaryKeyInfo")) {
// $NON-NLS-1$
return 115;
} else if (source.equals("X_Visible_Rule")) {
// $NON-NLS-1$
return 116;
} else if (source.equals("X_Default_Value_Rule")) {
// $NON-NLS-1$
return 117;
} else if (source.equals("X_Deny_Create")) {
// $NON-NLS-1$
return 118;
} else if (source.equals("X_Deny_PhysicalDelete")) {
// $NON-NLS-1$
return 119;
} else if (source.equals("X_Deny_LogicalDelete")) {
// $NON-NLS-1$
return 120;
} else if (source.equals("X_FKIntegrity")) {
// $NON-NLS-1$
return 121;
} else if (source.equals("X_FKIntegrity_Override")) {
// $NON-NLS-1$
return 122;
} else if (source.equals("X_ForeignKeyInfoFormat")) {
// $NON-NLS-1$
return 123;
}
}
}
return -1;
}
use of org.eclipse.xsd.XSDIdentityConstraintDefinition in project tmdm-studio-se by Talend.
the class XSDNewConceptAction method widgetSelected.
/**
* author: fliu .this fun is to support button click event invoked from the new expansion of Concept creation dialog
*/
public void widgetSelected(SelectionEvent e) {
// $NON-NLS-1$
NewConceptOrElementDialog dlg = (NewConceptOrElementDialog) ((Widget) e.getSource()).getData("dialog");
if (dlg.getReturnCode() == Window.OK) {
XSDFactory factory = XSDSchemaBuildingTools.getXSDFactory();
decl = factory.createXSDElementDeclaration();
decl.setName(dlg.getTypeName());
// $NON-NLS-1$
decl.setTypeDefinition(schema.resolveSimpleTypeDefinition(schema.getSchemaForSchemaNamespace(), "string"));
XSDIdentityConstraintDefinition uniqueKey = factory.createXSDIdentityConstraintDefinition();
uniqueKey.setIdentityConstraintCategory(XSDIdentityConstraintCategory.UNIQUE_LITERAL);
uniqueKey.setName(dlg.getTypeName());
XSDXPathDefinition selector = factory.createXSDXPathDefinition();
selector.setVariety(XSDXPathVariety.SELECTOR_LITERAL);
// $NON-NLS-1$
selector.setValue(".");
uniqueKey.setSelector(selector);
XSDXPathDefinition field = factory.createXSDXPathDefinition();
field.setVariety(XSDXPathVariety.FIELD_LITERAL);
// $NON-NLS-1$
field.setValue(".");
uniqueKey.getFields().add(field);
decl.getIdentityConstraintDefinitions().add(uniqueKey);
schema.getContents().add(decl);
// schema.getElementDeclarations().add(decl);
decl.updateElement();
// page.markDirty();
getOperationHistory();
UndoAction changeAction = null;
if (dlg.isComplexType()) {
changeAction = new XSDChangeToComplexTypeAction(page, decl, dlg.getComplexType(), dlg.isChoice(), dlg.isAll(), dlg.isAbstract(), dlg.getSuperTypeName());
} else {
changeAction = new XSDChangeToSimpleTypeAction(page, decl, dlg.getElementType(), dlg.isBuildIn());
}
dlg.close();
changeAction.setOmitTrack(true);
IStatus status = changeAction.execute();
if (status == Status.CANCEL_STATUS) {
schema.getContents().remove(decl);
}
page.refresh();
}
}
Aggregations