blob: 834bc71e3893f361f0f8f7320fa2310109ae7167 [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.ws.internal.explorer.platform.perspective;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
/**
* An message bundle is a collection of messages drawn from some
* set of properties.
*/
public class MessageBundle
{
private ResourceBundle fResourceBundle;
/**
* Constructs a new MessageBundle from the given ResourceBundle.
*/
public MessageBundle ( ResourceBundle resourceBundle )
{
fResourceBundle = resourceBundle;
}
/**
* Returns the message identified by messageId.
* @param messageId The message ID.
* @return String The message text.
*/
public String getMessage ( String messageId )
{
try
{
return fResourceBundle.getString(messageId);
}
catch (MissingResourceException e)
{
return messageId;
}
}
/**
* Returns the message identified by messageId.
* @param messageId The message ID.
* @param sub A substitution value for "%1" in the message.
* @return String The message text.
*/
public String getMessage ( String messageId, String sub )
{
String[] s = {sub};
return getMessage(messageId,s);
}
/**
* Returns the message identified by messageId.
* @param messageId The message ID.
* @param sub Substitution values for "%1..%n" (sub[0]..sub[n-1]) in
* the message.
* @return String The message text.
*/
public String getMessage ( String messageId, String[] sub )
{
String m = getMessage(messageId);
int len = m.length();
int max = sub.length;
StringBuffer b = new StringBuffer();
int pos = 0;
while (pos >= 0)
{
int pct = m.indexOf('%',pos);
if (pct >= 0)
{
b.append(m.substring(pos,pct));
pos = pct + 1;
if (pos < len)
{
char d = m.charAt(pos);
if (Character.isDigit(d) && d != '0')
{
int v = Integer.parseInt(new Character(d).toString());
if (v <= max)
{
b.append(sub[v-1]);
}
else
{
b.append('?');
}
pos++;
}
else
{
b.append('%');
b.append(d);
pos++;
}
}
else
{
b.append('%');
pos = -1;
}
}
else
{
b.append(m.substring(pos));
pos = -1;
}
}
return b.toString();
}
public ResourceBundle getResourceBundle()
{
return fResourceBundle;
}
}