// ============================================================================ // // Copyright (C) 2006-2016 Talend Inc. - www.talend.com // // This source code is available under agreement available at // %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt // // You should have received a copy of the agreement // along with this program; if not, write to Talend SA // 9 rue Pages 92150 Suresnes, France // // ============================================================================ package com.amalto.workbench.utils.inputvalidator; import java.util.regex.Pattern; import org.eclipse.jface.dialogs.IInputValidator; import org.eclipse.xsd.XSDElementDeclaration; import org.eclipse.xsd.XSDIdentityConstraintCategory; import org.eclipse.xsd.XSDIdentityConstraintDefinition; import org.eclipse.xsd.XSDSchema; import com.amalto.workbench.i18n.Messages; public class EditXSDIdentityConstraintNameValidator implements IInputValidator { private XSDIdentityConstraintDefinition key; public EditXSDIdentityConstraintNameValidator(XSDIdentityConstraintDefinition key) { this.key = key; } public XSDSchema getSchema() { return key.getSchema(); } public XSDIdentityConstraintDefinition getKey() { return key; } // @Override public String isValid(String newText) { if ((newText == null) || "".equals(newText))//$NON-NLS-1$ return Messages.EditXSDIdXXValidator_UniqueKeyNameCannotbeEmpty; if (Pattern.compile("^\\s+\\w+\\s*").matcher(newText).matches()//$NON-NLS-1$ || newText.trim().replaceAll("\\s", "").length() != newText.trim().length())//$NON-NLS-1$//$NON-NLS-2$ return Messages.EditXSDIdXXValidator_UniqueKeyNameCannotContainEmpty; if (XSDIdentityConstraintCategory.UNIQUE_LITERAL.equals(key.getIdentityConstraintCategory()) && !newText.trim().equals(((XSDElementDeclaration) key.getContainer()).getName())) { return Messages.EditXSDIdXXValidator_UniqueKeyNameMustbeEqualXX; } for (XSDIdentityConstraintDefinition eachId : getSchema().getIdentityConstraintDefinitions()) { if (eachId.getName().equals(newText.trim())) return Messages.EditXSDIdXXValidator_KeyAlreadyExist; } return null; } }