blob: 99934d0a0adaec4ca61cc1fc1412b51e4040e744 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011, 2012 Mentor Graphics and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Mentor Graphics - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.dsf.gdb.service.command;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
import org.eclipse.cdt.dsf.gdb.internal.GdbPlugin;
import org.eclipse.cdt.dsf.gdb.internal.Messages;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.MultiStatus;
import org.eclipse.core.runtime.Status;
/**
* @since 4.1
*/
public class CustomTimeoutsMap extends HashMap<String, Integer> {
public CustomTimeoutsMap() {
super();
}
public CustomTimeoutsMap(CustomTimeoutsMap map) {
super(map);
}
private static final long serialVersionUID = -8281280275781904870L;
public String getMemento() {
StringBuilder sb = new StringBuilder();
for (Map.Entry<String, Integer> entry : entrySet()) {
sb.append(entry.getKey());
sb.append(',');
sb.append(entry.getValue().intValue());
sb.append(';');
}
return sb.toString();
}
public void initializeFromMemento(String memento) {
clear();
StringTokenizer st = new StringTokenizer(memento, ";"); //$NON-NLS-1$
MultiStatus ms = new MultiStatus(GdbPlugin.PLUGIN_ID, 0,
Messages.CustomTimeoutsMap_Error_initializing_custom_timeouts, null);
while (st.hasMoreTokens()) {
String token = st.nextToken();
String[] tokenParts = token.split(","); //$NON-NLS-1$
if (tokenParts.length == 2 && tokenParts[0].length() > 0 && tokenParts[1].length() > 0) {
try {
put(tokenParts[0], Integer.valueOf(tokenParts[1]));
} catch (NumberFormatException e) {
ms.add(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID,
String.format(Messages.CustomTimeoutsMap_Invalid_custom_timeout_value, tokenParts[0])));
}
} else {
ms.add(new Status(IStatus.ERROR, GdbPlugin.PLUGIN_ID,
Messages.CustomTimeoutsMap_Invalid_custom_timeout_data));
}
}
if (!ms.isOK()) {
GdbPlugin.getDefault().getLog().log(ms);
}
}
}