blob: 8d1abc77ed9c10f3e30f8c4bc70fa97b9db37591 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.message.tool.rec;
import org.eclipse.osee.ote.message.elements.ArrayElement;
import org.eclipse.osee.ote.message.elements.BooleanElement;
import org.eclipse.osee.ote.message.elements.CharElement;
import org.eclipse.osee.ote.message.elements.Element;
import org.eclipse.osee.ote.message.elements.EmptyEnum_Element;
import org.eclipse.osee.ote.message.elements.EnumeratedElement;
import org.eclipse.osee.ote.message.elements.FixedPointElement;
import org.eclipse.osee.ote.message.elements.Float32Element;
import org.eclipse.osee.ote.message.elements.Float64Element;
import org.eclipse.osee.ote.message.elements.IElementVisitor;
import org.eclipse.osee.ote.message.elements.IntegerElement;
import org.eclipse.osee.ote.message.elements.LongIntegerElement;
import org.eclipse.osee.ote.message.elements.RealElement;
import org.eclipse.osee.ote.message.elements.RecordElement;
import org.eclipse.osee.ote.message.elements.RecordMap;
import org.eclipse.osee.ote.message.elements.SignedInteger16Element;
import org.eclipse.osee.ote.message.elements.StringElement;
import org.eclipse.osee.ote.message.tool.rec.entry.ArrayElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.BooleanElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.CharElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.EmptyEnumEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.EnumeratedElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.IElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.IntegerElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.LongIntegerElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.RealElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.RecordElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.RecordMapEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.SignedInteger16ElementEntry;
import org.eclipse.osee.ote.message.tool.rec.entry.StringElementEntry;
public class ElementEntryFactory {
private static final class ElementVisitor implements IElementVisitor {
private IElementEntry entry = null;
public IElementEntry getEntry() {
return entry;
}
@Override
public void asCharElement(CharElement element) {
entry = new CharElementEntry(element);
}
@Override
public void asEnumeratedElement(EnumeratedElement<?> element) {
entry = new EnumeratedElementEntry(element);
}
@Override
public void asFixedPointElement(FixedPointElement element) {
entry = new RealElementEntry(element);
}
@Override
public void asFloat32(Float32Element element) {
entry = new RealElementEntry(element);
}
@Override
public void asFloat64(Float64Element element) {
entry = new RealElementEntry(element);
}
@Override
public void asGenericElement(Element element) {
}
@Override
public void asIntegerElement(IntegerElement element) {
entry = new IntegerElementEntry(element);
}
@Override
public void asRealElement(RealElement element) {
entry = new RealElementEntry(element);
}
@Override
public void asRecordElement(RecordElement element) {
entry = new RecordElementEntry(element);
}
@Override
public void asStringElement(StringElement element) {
entry = new StringElementEntry(element);
}
@Override
public void asBooleanElement(BooleanElement element) {
entry = new BooleanElementEntry(element);
}
@Override
public void asRecordMap(RecordMap<? extends RecordElement> element) {
entry = new RecordMapEntry(element);
}
@Override
public void asEmptyEnumElement(EmptyEnum_Element element) {
entry = new EmptyEnumEntry(element);
}
@Override
public void asArrayElement(ArrayElement element) {
entry = new ArrayElementEntry(element);
}
@Override
public void asLongIntegerElement(LongIntegerElement element) {
entry = new LongIntegerElementEntry(element);
}
@Override
public void asSignedInteger16Element(SignedInteger16Element element) {
entry = new SignedInteger16ElementEntry(element);
}
}
public static IElementEntry createEntry(Element element) {
ElementVisitor visitor = new ElementVisitor();
element.visit(visitor);
IElementEntry entry = visitor.getEntry();
if (entry != null) {
return entry;
}
throw new IllegalArgumentException("factory cannot generate an entry for class " + element.getClass().getName());
}
}