/******************************************************************************* * Copyright (c) 2007 Exadel, Inc. and Red Hat, Inc. * Distributed under license by Red Hat, Inc. All rights reserved. * This program is made available under the terms of the * Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Exadel, Inc. and Red Hat, Inc. - initial API and implementation ******************************************************************************/ package org.jboss.tools.common.meta.constraint.impl; import java.text.MessageFormat; import java.util.*; public class XAttributeConstraintQClassName extends XAttributeConstraintImpl { private XAttributeConstraintJavaName x = new XAttributeConstraintJavaName(); public XAttributeConstraintQClassName() { x.allowPrimitiveTypes = true; } public boolean accepts(String value) { if(value == null) return false; if(value.length() == 0) return true; StringTokenizer st = new StringTokenizer(value, "."); //$NON-NLS-1$ ////if(st.countTokens() < 2) return false; while(st.hasMoreTokens()) { String t = st.nextToken(); if(!x.accepts(t)) return false; } return true; } public String getError(String value) { if(accepts(value)) return null; StringTokenizer st = new StringTokenizer(value, "."); //$NON-NLS-1$ ////if(st.countTokens() < 2) return "must be a qualified name of class in a package"; while(st.hasMoreTokens()) { String err = x.getError(st.nextToken()); if(err != null) return MessageFormat.format("contains part that {0}", err); } return null; } public String getCorrectedValue(String value) { if(value == null) return ""; //$NON-NLS-1$ StringBuffer sb = new StringBuffer(); StringTokenizer st = new StringTokenizer(value, "."); //$NON-NLS-1$ while(st.hasMoreTokens()) { String cor = x.getCorrectedValue(st.nextToken()); if(cor == null) continue; if(sb.length() > 0) sb.append('.'); sb.append(cor); } return (sb.length() == 0) ? null : sb.toString(); } }