package gov.nasa.jpl.mbee.mdk.model;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.Element;
import com.nomagic.uml2.ext.magicdraw.classes.mdkernel.EnumerationLiteral;
import gov.nasa.jpl.mbee.mdk.docgen.DocGenProfile;
import gov.nasa.jpl.mbee.mdk.docgen.docbook.DBTomSawyerDiagram;
import gov.nasa.jpl.mbee.mdk.docgen.docbook.DocumentElement;
import gov.nasa.jpl.mbee.mdk.util.GeneratorUtils;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import static gov.nasa.jpl.mbee.mdk.model.TomSawyerDiagram.diagramType.*;
import static gov.nasa.jpl.mbee.mdk.model.TomSawyerDiagram.diagramType.Table;
/**
* Created by johannes on 11/21/16.
*/
public class TomSawyerDiagram extends Query {
private diagramType type;
public void setType(diagramType type) {
this.type = type;
}
public enum diagramType {
Block_Definition_Diagram, Internal_Block_Diagram, State_Machine_Diagram, Activity_Diagram, Sequence_Diagram, Table
}
public TomSawyerDiagram() {
super();
}
@SuppressWarnings("unchecked")
@Override
public void initialize() {
Object enumliteral = GeneratorUtils.getObjectProperty(dgElement, DocGenProfile.tomsawyerDiagramStereotype,
"diagram_type", false);
if (enumliteral instanceof String) {
setType(diagramType.valueOf(enumliteral.toString()));
}
if (enumliteral instanceof EnumerationLiteral) {
((EnumerationLiteral) enumliteral).getEnumeration();
switch (((EnumerationLiteral) enumliteral).getName()) {
case "Block_Definition_Diagram":
setType(Block_Definition_Diagram);
break;
case "Internal_Block_Diagram":
setType(Block_Definition_Diagram);
break;
case "State_Machine_Diagram":
setType(State_Machine_Diagram);
break;
case "Activity_Diagram":
setType(Activity_Diagram);
break;
case "Sequence_Diagram":
setType(Sequence_Diagram);
break;
case "Table":
setType(Table);
break;
default:
}
}
}
public List<DocumentElement> visit(boolean forViewEditor, String outputDir) {
List<Element> elements = new ArrayList<>();
for (Object ob : this.getTargets()) {
if (ob instanceof Element) {
elements.add((Element) ob);
}
}
DBTomSawyerDiagram dbts = new DBTomSawyerDiagram(elements);
dbts.setType(type);
return Collections.singletonList(dbts);
}
}