| /******************************************************************************* |
| * Copyright (c) 2009, 2019 Xored Software Inc 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 |
| * https://www.eclipse.org/legal/epl-v20.html |
| * |
| * Contributors: |
| * Xored Software Inc - initial API and implementation and/or initial documentation |
| *******************************************************************************/ |
| package org.eclipse.rcptt.tesla.internal.core.processing; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import org.eclipse.rcptt.tesla.core.protocol.raw.Element; |
| import org.eclipse.rcptt.tesla.core.protocol.raw.RawFactory; |
| |
| public class ElementGenerator { |
| private Map<String, Integer> varCounters = new HashMap<String, Integer>(); |
| |
| public synchronized Element generate(String kind) { |
| String var = nextValue(kind); |
| Element e = RawFactory.eINSTANCE.createElement(); |
| e.setKind(kind); |
| e.setId(var); |
| return e; |
| } |
| |
| public synchronized String nextValue(String kind) { |
| Integer val = varCounters.get(kind); |
| if (val == null) { |
| val = 0; |
| } |
| String var = kind + val; |
| varCounters.put(kind, ++val); |
| return var; |
| } |
| |
| public synchronized void updateToNext(Element g) { |
| g.setId(nextValue(g.getKind())); |
| } |
| |
| } |