blob: 3c7307a6c656b8ae4540ee93b4ab0a156265f91d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2004 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.xsd.ui.internal.validation;
/**
* @author Mark Hutchinson
*
* The XSDMessageInfoHelper creates a string with the
*/
public class XSDMessageInfoHelper
{
public XSDMessageInfoHelper()
{ super();
}
public String[] createMessageInfo(String errorMessage, String errorKey)
{
//Now map the error key to what we would want to underline:
String nameOrValue = "";
String selectionStrategy = "";
if (errorKey.equals("s4s-elt-invalid-content.1") || errorKey.equals("s4s-elt-must-match.1") || errorKey.equals("s4s-att-must-appear") || errorKey.equals("s4s-elt-invalid-content.2"))
{ selectionStrategy = "START_TAG";
}
else if (errorKey.equals("s4s-att-not-allowed"))
{ selectionStrategy = "ATTRIBUTE_NAME";
nameOrValue = getFirstStringBetweenSingleQuotes(errorMessage);
}
else if (errorKey.equals("s4s-att-invalid-value"))
{ selectionStrategy = "ATTRIBUTE_VALUE";
nameOrValue = getFirstStringBetweenSingleQuotes(errorMessage);
}
else if (errorKey.equals("s4s-elt-character"))
{ selectionStrategy = "TEXT";
}
else if (errorKey.equals("src-resolve.4.2") || errorKey.equals("src-resolve"))
{ selectionStrategy = "VALUE_OF_ATTRIBUTE_WITH_GIVEN_VALUE";
nameOrValue = getFirstStringBetweenSingleQuotes(errorMessage);
}
String messageInfo[] = new String[2];
messageInfo[0] = selectionStrategy;
messageInfo[1] = nameOrValue;
return messageInfo;
}
/*
* Mark Hutchinson
*
* This method is used to get the value between the first pair of single quotes
* It is used to extract information from the error Message (for example
* an attribute name)
*/
private String getFirstStringBetweenSingleQuotes(String s)
{
int first = s.indexOf("'");
int second = s.indexOf("'", first + 1);
String betweenQuotes = null;
if (first != -1 && second != -1)
{ betweenQuotes = s.substring(first + 1, second);
}
return betweenQuotes;
}
}