blob: 80c881ccc042586b2636dcb95f5f4c9ce48ca776 [file] [log] [blame]
/**
* Copyright (c) 2012, 2013 itemis AG.
* 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:
* Mark Broerkens - initial API and implementation
*
*/
package org.eclipse.rmf.tests.reqif10.serialization.uc001.tc1200;
import java.math.BigInteger;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.util.FeatureMap;
import org.eclipse.emf.ecore.util.FeatureMapUtil;
import org.eclipse.rmf.reqif10.AttributeDefinitionString;
import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML;
import org.eclipse.rmf.reqif10.AttributeValueString;
import org.eclipse.rmf.reqif10.AttributeValueXHTML;
import org.eclipse.rmf.reqif10.DatatypeDefinition;
import org.eclipse.rmf.reqif10.DatatypeDefinitionString;
import org.eclipse.rmf.reqif10.DatatypeDefinitionXHTML;
import org.eclipse.rmf.reqif10.ReqIF10Factory;
import org.eclipse.rmf.reqif10.ReqIF10Package;
import org.eclipse.rmf.reqif10.SpecHierarchy;
import org.eclipse.rmf.reqif10.SpecObject;
import org.eclipse.rmf.reqif10.SpecObjectType;
import org.eclipse.rmf.reqif10.Specification;
import org.eclipse.rmf.reqif10.SpecificationType;
import org.eclipse.rmf.reqif10.XhtmlContent;
import org.eclipse.rmf.reqif10.xhtml.XhtmlColType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlColgroupType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlDdType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlDivType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlDlType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlDtType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlFactory;
import org.eclipse.rmf.reqif10.xhtml.XhtmlLiType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlObjectType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlOlType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlPType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlPackage;
import org.eclipse.rmf.reqif10.xhtml.XhtmlTableType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlTbodyType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlTdType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlTfootType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlTheadType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlTrType;
import org.eclipse.rmf.reqif10.xhtml.XhtmlUlType;
import org.eclipse.rmf.tests.reqif10.serialization.util.SimpleModelBuilder;
/**
*/
@SuppressWarnings("nls")
public class TC1200FormatedContentModelBuilder extends SimpleModelBuilder {
final static String LAST_CHANGE_STRING = "2012-04-07T01:51:37.112+02:00";
int id_counter = 0;
int specHierarchyCounter = 0;
int specObjectCounter = 0;
// datatypes
DatatypeDefinitionXHTML datatypeDefinitionXHTML;
DatatypeDefinitionString datatypeDefinitionString;
// SpecObjectTypes
SpecObjectType specObjectType;
AttributeDefinitionXHTML attributeDefinitionXHTML;
AttributeDefinitionString attributeDefinitionString;
// SpecificationTypes
SpecificationType specificationType;
// SpecObjects
SpecObject specObject;
/**
* @throws Exception
*
*/
public TC1200FormatedContentModelBuilder() throws Exception {
super(null, "ID_TC1200_ReqIfHeader", "TC 1200 'Formated Content'");
}
@Override
public void createDatatypes() throws Exception {
// datatypeDefinitionXHTML
datatypeDefinitionXHTML = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionXHTML();
datatypeDefinitionXHTML.setIdentifier("ID_TC1200_DatatypeDefinitionXHTML");
datatypeDefinitionXHTML.setLongName("TC1200 XHTML");
datatypeDefinitionXHTML.setLastChange(toDate(LAST_CHANGE_STRING));
// datatypeDefinitionString
datatypeDefinitionString = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionString();
datatypeDefinitionString.setIdentifier("ID_TC1200_DatatypeDefinitionString");
datatypeDefinitionString.setLongName("TC1200 String");
datatypeDefinitionString.setMaxLength(new BigInteger("255"));
datatypeDefinitionString.setLastChange(toDate(LAST_CHANGE_STRING));
EList<DatatypeDefinition> datatypes = getReqIF().getCoreContent().getDatatypes();
datatypes.add(datatypeDefinitionXHTML);
datatypes.add(datatypeDefinitionString);
}
@Override
public void createSpecObjectTypes() throws Exception {
// SpecObjectType
specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType();
specObjectType.setIdentifier("ID_TC1200_SpecObjectType");
specObjectType.setLongName("TC1200 SpecObjectType");
specObjectType.setLastChange(toDate(LAST_CHANGE_STRING));
// AttributeDefinitionXHTML
attributeDefinitionXHTML = ReqIF10Factory.eINSTANCE.createAttributeDefinitionXHTML();
attributeDefinitionXHTML.setIdentifier("ID_TC1200_AttributeDefinitionXHTML");
attributeDefinitionXHTML.setLongName("TC1200 AttributeDefinitionXHTML");
attributeDefinitionXHTML.setLastChange(toDate(LAST_CHANGE_STRING));
attributeDefinitionXHTML.setType(datatypeDefinitionXHTML);
// AttributeDefinitionString
attributeDefinitionString = ReqIF10Factory.eINSTANCE.createAttributeDefinitionString();
attributeDefinitionString.setIdentifier("ID_TC1200_AttributeDefinitionString");
attributeDefinitionString.setLongName("TC1200 AttributeDefinitionString");
attributeDefinitionString.setLastChange(toDate(LAST_CHANGE_STRING));
attributeDefinitionString.setType(datatypeDefinitionString);
specObjectType.getSpecAttributes().add(attributeDefinitionXHTML);
specObjectType.getSpecAttributes().add(attributeDefinitionString);
getReqIF().getCoreContent().getSpecTypes().add(specObjectType);
}
@Override
public void createSpecificationTypes() throws Exception {
specificationType = ReqIF10Factory.eINSTANCE.createSpecificationType();
specificationType.setIdentifier("ID_TC1200_SpecificationType");
specificationType.setLongName("TC1200 SpecificationType");
specificationType.setLastChange(toDate(LAST_CHANGE_STRING));
getReqIF().getCoreContent().getSpecTypes().add(specificationType);
}
@Override
public void createSpecifications() throws Exception {
Specification specification = ReqIF10Factory.eINSTANCE.createSpecification();
specification.setIdentifier("ID_TC1200_Specification");
specification.setType(specificationType);
specification.setLastChange(toDate(LAST_CHANGE_STRING));
SpecHierarchy specHierarchy;
for (SpecObject specObject : getReqIF().getCoreContent().getSpecObjects()) {
specHierarchy = ReqIF10Factory.eINSTANCE.createSpecHierarchy();
specHierarchy.setIdentifier("ID_TC1200_SpecHierarchy_" + specHierarchyCounter++);
specHierarchy.setLastChange(toDate(LAST_CHANGE_STRING));
specHierarchy.setObject(specObject);
specification.getChildren().add(specHierarchy);
getReqIF().getCoreContent().getSpecifications().add(specification);
}
}
@Override
public void createSpecObjects() throws Exception {
SpecObject specObject;
String description;
EObject xhtmlLevel1;
EObject xhtmlLevel2;
EObject xhtmlLevel3;
EObject xhtmlLevel4;
// level 0 / empty xhtml input
/*
* description = "empty"; specObject = createSpecObject(description,
* ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), null);
* getReqIF().getCoreContent().getSpecObjects().add(specObject); description = "empty_the_original_value";
* specObject = createSpecObject(description,
* ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheOriginalValue(), null);
* getReqIF().getCoreContent().getSpecObjects().add(specObject);
*/
// level 1 / top level
// create fill XhtmlDivType in XhtmlContent.div at original value
description = "xhtml.p.type_the_original_value";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlPType(), true);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheOriginalValue(), xhtmlLevel1);
description = "xhtml.p.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlPType(), true);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
// create fill XhtmlDivType in XhtmlContent.div at original value
description = "xhtml.div.type_the_original_value";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), true);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheOriginalValue(), xhtmlLevel1);
description = "xhtml.div.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), true);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
// level 2
// objects that are contained on xhtml.p.type
createSpecObjectWithPXhtml("xhtml.br.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Br(), XhtmlPackage.eINSTANCE.getXhtmlBrType());
createSpecObjectWithPXhtml("xhtml.span.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Span(), XhtmlPackage.eINSTANCE.getXhtmlSpanType());
createSpecObjectWithPXhtml("xhtml.em.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Em(), XhtmlPackage.eINSTANCE.getXhtmlEmType());
createSpecObjectWithPXhtml("xhtml.strong.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Strong(), XhtmlPackage.eINSTANCE.getXhtmlStrongType());
createSpecObjectWithPXhtml("xhtml.dfn.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Dfn(), XhtmlPackage.eINSTANCE.getXhtmlDfnType());
createSpecObjectWithPXhtml("xhtml.code.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Code(), XhtmlPackage.eINSTANCE.getXhtmlCodeType());
createSpecObjectWithPXhtml("xhtml.samp.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Samp(), XhtmlPackage.eINSTANCE.getXhtmlSampType());
createSpecObjectWithPXhtml("xhtml.kbd.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Kbd(), XhtmlPackage.eINSTANCE.getXhtmlKbdType());
createSpecObjectWithPXhtml("xhtml.var.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Var(), XhtmlPackage.eINSTANCE.getXhtmlVarType());
createSpecObjectWithPXhtml("xhtml.cite.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Cite(), XhtmlPackage.eINSTANCE.getXhtmlCiteType());
createSpecObjectWithPXhtml("xhtml.abbr.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Abbr(), XhtmlPackage.eINSTANCE.getXhtmlAbbrType());
createSpecObjectWithPXhtml("xhtml.acronym.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Acronym(), XhtmlPackage.eINSTANCE.getXhtmlAcronymType());
createSpecObjectWithPXhtml("xhtml.q.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Q(), XhtmlPackage.eINSTANCE.getXhtmlQType());
createSpecObjectWithPXhtml("xhtml.inl.pres.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Tt(), XhtmlPackage.eINSTANCE.getXhtmlInlPresType());
createSpecObjectWithPXhtml("xhtml.a.type", XhtmlPackage.eINSTANCE.getXhtmlPType_A(), XhtmlPackage.eINSTANCE.getXhtmlAType());
// (mj) we omit object here, as it does not support styles and is tested later on extensively. See REQIF-17
// createSpecObjectWithPXhtml("xhtml.object.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Object(),
// XhtmlPackage.eINSTANCE.getXhtmlObjectType());
createSpecObjectWithPXhtml("xhtml.edit.type", XhtmlPackage.eINSTANCE.getXhtmlPType_Ins(), XhtmlPackage.eINSTANCE.getXhtmlEditType());
// first level objects that are contained in xhtml.div.type and are not already covered by xhtml.p.type
createSpecObjectWithDivXhtml("xhtml.h1.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_H1(), XhtmlPackage.eINSTANCE.getXhtmlH1Type());
createSpecObjectWithDivXhtml("xhtml.h2.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_H2(), XhtmlPackage.eINSTANCE.getXhtmlH2Type());
createSpecObjectWithDivXhtml("xhtml.h3.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_H3(), XhtmlPackage.eINSTANCE.getXhtmlH3Type());
createSpecObjectWithDivXhtml("xhtml.h4.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_H4(), XhtmlPackage.eINSTANCE.getXhtmlH4Type());
createSpecObjectWithDivXhtml("xhtml.h5.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_H5(), XhtmlPackage.eINSTANCE.getXhtmlH5Type());
createSpecObjectWithDivXhtml("xhtml.h6.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_H6(), XhtmlPackage.eINSTANCE.getXhtmlH6Type());
createSpecObjectWithDivXhtml("xhtml.ul.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Ul(), XhtmlPackage.eINSTANCE.getXhtmlUlType());
createSpecObjectWithDivXhtml("xhtml.ol.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Ol(), XhtmlPackage.eINSTANCE.getXhtmlOlType());
createSpecObjectWithDivXhtml("xhtml.dl.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Dl(), XhtmlPackage.eINSTANCE.getXhtmlDlType());
createSpecObjectWithDivXhtml("xhtml.pre.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Pre(), XhtmlPackage.eINSTANCE.getXhtmlPreType());
createSpecObjectWithDivXhtml("xhtml.blockquote.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Blockquote(),
XhtmlPackage.eINSTANCE.getXhtmlBlockquoteType());
createSpecObjectWithDivXhtml("xhtml.address.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Address(),
XhtmlPackage.eINSTANCE.getXhtmlAddressType());
createSpecObjectWithDivXhtml("xhtml.hr.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Hr(), XhtmlPackage.eINSTANCE.getXhtmlHrType());
createSpecObjectWithDivXhtml("xhtml.table.type", XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), XhtmlPackage.eINSTANCE.getXhtmlTableType());
// level 3
// xhtml.li.type
description = "xhtml.li.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlUlType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Ul(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlLiType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlUlType_Li(), xhtmlLevel3);
// xhtml.dt.type
description = "xhtml.dt.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDlType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Dl(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDtType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlDlType_Dt(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDdType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlDlType_Dd(), xhtmlLevel3);
// xhtml.dd.type
description = "xhtml.dd.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDlType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Dl(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDtType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlDlType_Dt(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDdType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlDlType_Dd(), xhtmlLevel3);
// xhtml.caption.type
description = "xhtml.caption.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlCaptionType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Caption(), xhtmlLevel3);
// xhtml.thead.type
description = "xhtml.thead.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
((XhtmlTableType) xhtmlLevel2).getTr().clear();
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTheadType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Thead(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTbodyType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tbody(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTfootType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tfoot(), xhtmlLevel3);
// xhtml.col.type
description = "xhtml.col.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlColType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Col(), xhtmlLevel3);
// xhtml.colgroup.type
description = "xhtml.colgroup.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlColgroupType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Colgroup(), xhtmlLevel3);
// xhtml.tfoot.type
description = "xhtml.tfoot.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
((XhtmlTableType) xhtmlLevel2).getTr().clear();
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTheadType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Thead(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTbodyType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tbody(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTfootType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tfoot(), xhtmlLevel3);
// xhtml.tbody.type
description = "xhtml.tbody.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
((XhtmlTableType) xhtmlLevel2).getTr().clear();
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTheadType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Thead(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTbodyType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tbody(), xhtmlLevel3);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTfootType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tfoot(), xhtmlLevel3);
// xhtml.tr.type
description = "xhtml.tr.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTrType(), true);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tr(), xhtmlLevel3);
// xhtml.param.type
// (mj) removed, due to REQIF-17
// description = "xhtml.param.type";
// xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
// specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(),
// xhtmlLevel1);
// getReqIF().getCoreContent().getSpecObjects().add(specObject);
//
// xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlObjectType(), false);
// // setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Object(), xhtmlLevel2);
//
// xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlParamType(), true);
// setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlObjectType_Param(), xhtmlLevel3);
// level 4
// xhtml.td.type
description = "xhtml.td.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTrType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tr(), xhtmlLevel3);
xhtmlLevel4 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTdType(), true);
setValue(xhtmlLevel3, XhtmlPackage.eINSTANCE.getXhtmlTrType_Td(), xhtmlLevel4);
// xhtml.th.type
description = "xhtml.th.type";
xhtmlLevel1 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlLevel1);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
xhtmlLevel2 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTableType(), false);
setValue(xhtmlLevel1, XhtmlPackage.eINSTANCE.getXhtmlDivType_Table(), xhtmlLevel2);
xhtmlLevel3 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTrType(), false);
setValue(xhtmlLevel2, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tr(), xhtmlLevel3);
xhtmlLevel4 = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlThType(), true);
setValue(xhtmlLevel3, XhtmlPackage.eINSTANCE.getXhtmlTrType_Th(), xhtmlLevel4);
}
private void createSpecObjectWithPXhtml(String description, EReference eReference, EClass targetType) throws Exception {
EObject xhtmlRoot = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlPType(), false);
setValue(xhtmlRoot, eReference, createXhtmlInstance(targetType, true));
SpecObject specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlRoot);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
}
private void createSpecObjectWithDivXhtml(String description, EReference eReference, EClass targetType) throws Exception {
EObject xhtmlRoot = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlDivType(), false);
setValue(xhtmlRoot, eReference, createXhtmlInstance(targetType, true));
SpecObject specObject = createSpecObject(description, ReqIF10Package.eINSTANCE.getAttributeValueXHTML_TheValue(), xhtmlRoot);
getReqIF().getCoreContent().getSpecObjects().add(specObject);
}
private SpecObject createSpecObject(String text, EStructuralFeature attributeValueXhtmlFeature, EObject eObject) throws Exception {
SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject();
specObject.setIdentifier("ID_TC1200_SpecObject_" + text);
specObject.setLastChange(toDate(LAST_CHANGE_STRING));
specObject.setType(specObjectType);
AttributeValueString attributeValueString = ReqIF10Factory.eINSTANCE.createAttributeValueString();
attributeValueString.setDefinition(attributeDefinitionString);
attributeValueString.setTheValue(text);
specObject.getValues().add(attributeValueString);
AttributeValueXHTML attributeValueXHTML = ReqIF10Factory.eINSTANCE.createAttributeValueXHTML();
attributeValueXHTML.setDefinition(attributeDefinitionXHTML);
XhtmlContent xhtmlContent = ReqIF10Factory.eINSTANCE.createXhtmlContent();
setValue(attributeValueXHTML, attributeValueXhtmlFeature, xhtmlContent);
if (null != eObject) {
xhtmlContent.setXhtml(eObject);
} else {
// null
}
specObject.getValues().add(attributeValueXHTML);
return specObject;
}
private EObject createXhtmlInstance(EClass eClass, boolean createAll) {
EObject eObject = EcoreUtil.create(eClass);
setAttributes(eObject, createAll);
setSubElements(eObject, createAll);
setMixedText(eObject, createAll);
return eObject;
}
private void setMixedText(EObject eObject, boolean createAll) {
// get the mixed attribute
EAttribute mixedAttribute = null;
for (EAttribute eAttribute : eObject.eClass().getEAllAttributes()) {
if ("mixed".equals(eAttribute.getName()) && EcorePackage.eINSTANCE.getEFeatureMapEntry() == eAttribute.getEAttributeType()) {
mixedAttribute = eAttribute;
break;
}
}
if (null != mixedAttribute) {
FeatureMap featureMap = (FeatureMap) eObject.eGet(mixedAttribute);
int featureMapSize = featureMap.size();
if (0 == featureMapSize) {
featureMap.add(FeatureMapUtil.createTextEntry(eObject.eClass().getName()));
} else {
if (createAll) {
for (int i = 0; i < featureMapSize * 3; i = i + 3) {
FeatureMap.Entry entry = featureMap.get(i);
EStructuralFeature feature = entry.getEStructuralFeature();
featureMap.add(i, FeatureMapUtil.createTextEntry("\n text before " + feature.getName()));
featureMap.add(i + 2, FeatureMapUtil.createTextEntry("text after " + feature.getName()));
}
}
}
} else {
// System.out.println("no mixed Attribute found in " + eObject);
}
}
private void setSubElements(EObject eObject, boolean createAll) {
if (createAll) {
if (eObject instanceof XhtmlTableType) {
EObject subEObject;
// caption
subEObject = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlCaptionType(), false);
setValue(eObject, XhtmlPackage.eINSTANCE.getXhtmlTableType_Caption(), subEObject);
// colgroup
subEObject = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlColgroupType(), false);
setValue(eObject, XhtmlPackage.eINSTANCE.getXhtmlTableType_Colgroup(), subEObject);
// thead
subEObject = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTheadType(), false);
setValue(eObject, XhtmlPackage.eINSTANCE.getXhtmlTableType_Thead(), subEObject);
// tbody
subEObject = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTbodyType(), false);
setValue(eObject, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tbody(), subEObject);
// tfoot
subEObject = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTfootType(), false);
setValue(eObject, XhtmlPackage.eINSTANCE.getXhtmlTableType_Tfoot(), subEObject);
// tr
/*
* subEObject = createXhtmlInstance(XhtmlPackage.eINSTANCE.getXhtmlTrType(), false); setValue(eObject,
* XhtmlPackage.eINSTANCE.getXhtmlTableType_Tr(), subEObject);
*/
} else {
// create full set of sub elements
for (EReference eReference : eObject.eClass().getEAllContainments()) {
// (mj) Skip XhtmlObjectType
if (eReference.getEReferenceType().getName().equals("XhtmlObjectType")) {
continue;
}
EObject subEObject = createXhtmlInstance(eReference.getEReferenceType(), false);
setValue(eObject, eReference, subEObject);
}
}
} else {
// create mandatory sub elements only
if (eObject instanceof XhtmlTableType) {
XhtmlTrType tr = XhtmlFactory.eINSTANCE.createXhtmlTrType();
setAttributes(tr, false);
((XhtmlTableType) eObject).getTr().add(tr);
XhtmlTdType td = XhtmlFactory.eINSTANCE.createXhtmlTdType();
setAttributes(td, false);
tr.getTd().add(td);
} else if (eObject instanceof XhtmlTbodyType) {
XhtmlTrType tr = XhtmlFactory.eINSTANCE.createXhtmlTrType();
setAttributes(tr, false);
((XhtmlTbodyType) eObject).getTr().add(tr);
XhtmlTdType td = XhtmlFactory.eINSTANCE.createXhtmlTdType();
setAttributes(td, false);
tr.getTd().add(td);
} else if (eObject instanceof XhtmlTheadType) {
XhtmlTrType tr = XhtmlFactory.eINSTANCE.createXhtmlTrType();
setAttributes(tr, false);
((XhtmlTheadType) eObject).getTr().add(tr);
XhtmlTdType td = XhtmlFactory.eINSTANCE.createXhtmlTdType();
setAttributes(td, false);
tr.getTd().add(td);
} else if (eObject instanceof XhtmlTfootType) {
XhtmlTrType tr = XhtmlFactory.eINSTANCE.createXhtmlTrType();
setAttributes(tr, false);
((XhtmlTfootType) eObject).getTr().add(tr);
XhtmlTdType td = XhtmlFactory.eINSTANCE.createXhtmlTdType();
setAttributes(td, false);
tr.getTd().add(td);
} else if (eObject instanceof XhtmlTrType) {
XhtmlTdType td = XhtmlFactory.eINSTANCE.createXhtmlTdType();
setAttributes(td, false);
((XhtmlTrType) eObject).getTd().add(td);
} else if (eObject instanceof XhtmlDlType) {
XhtmlDtType dt = XhtmlFactory.eINSTANCE.createXhtmlDtType();
setAttributes(dt, false);
setMixedText(dt, false);
XhtmlDdType dd = XhtmlFactory.eINSTANCE.createXhtmlDdType();
setAttributes(dd, false);
setMixedText(dd, false);
((XhtmlDlType) eObject).getDt().add(dt);
((XhtmlDlType) eObject).getDd().add(dd);
} else if (eObject instanceof XhtmlUlType) {
XhtmlLiType li = XhtmlFactory.eINSTANCE.createXhtmlLiType();
setAttributes(li, false);
setMixedText(li, false);
((XhtmlUlType) eObject).getLi().add(li);
} else if (eObject instanceof XhtmlOlType) {
XhtmlLiType li = XhtmlFactory.eINSTANCE.createXhtmlLiType();
setAttributes(li, false);
setMixedText(li, false);
((XhtmlOlType) eObject).getLi().add(li);
} else if (eObject instanceof XhtmlColgroupType) {
XhtmlColType col = XhtmlFactory.eINSTANCE.createXhtmlColType();
setAttributes(col, false);
setMixedText(col, false);
((XhtmlColgroupType) eObject).getCol().add(col);
} else if (eObject instanceof XhtmlObjectType) {
throw new UnsupportedOperationException("Looks like there is an XhtmlObject Type in this ModelBuilder."
+ "However, we don't want to have any, as it this test is only meant for formatting, not object"
+ "embedding (see issue REQIF-17).");
// also, set the required object data.
// ((XhtmlObjectType) eObject).setData("diagram.pdf");
// ((XhtmlObjectType) eObject).setType("application/pdf");
//
// XhtmlObjectType obj = XhtmlFactory.eINSTANCE.createXhtmlObjectType();
// obj.setType("image/png");
// obj.setData("placeholder.png");
// setAttributes(obj, false);
// setMixedText(obj, false);
// ((XhtmlObjectType) eObject).getObject().add(obj);
}
}
}
private void setAttributes(EObject eObject, boolean createAll) {
for (EAttribute eAttribute : eObject.eClass().getEAllAttributes()) {
if (createAll || eAttribute.isRequired()) {
Object value = getValue(eAttribute);
if (null != value && eAttribute.isChangeable()) {
setValue(eObject, eAttribute, value);
}
}
}
}
private Object getValue(EAttribute eAttribute) {
EDataType eDataType = eAttribute.getEAttributeType();
String datatypeName = eDataType.getName();
if ("class".equals(eAttribute.getName())) {
// ReqIF never use class
return null;
}
if ("style".equals(eAttribute.getName())) {
// ReqIF only limited support
return EcoreUtil.createFromString(eDataType, "text-decoration:underline");
}
if (XhtmlPackage.eINSTANCE.getXhtmlObjectType_Class() == eAttribute || XhtmlPackage.eINSTANCE.getXhtmlObjectType_Archive() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Classid() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Codebase() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Codetype() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Declare() == eAttribute || XhtmlPackage.eINSTANCE.getXhtmlObjectType_Id() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Lang() == eAttribute || XhtmlPackage.eINSTANCE.getXhtmlObjectType_Name() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Space() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Standby() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Style() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Tabindex() == eAttribute
|| XhtmlPackage.eINSTANCE.getXhtmlObjectType_Title() == eAttribute) {
// ReqIF: only attributes data, type, width, height are allowed
return null;
}
if ("String".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "text");
}
if ("LangType".equals(datatypeName)) {
return null;
}
if ("SpaceType".equals(datatypeName)) {
return null;
}
if ("ID".equals(datatypeName)) {
return null;
// return EcoreUtil.createFromString(eDataType, "ID" + id_counter++);
}
if ("CDATA".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "CDATA\"CDATA");
}
if ("Datetime".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "2012-04-05T02:39:33.005+02:00");
}
if ("URI".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "http://eclipse.org/rmf");
}
if ("EFeatureMapEntry".equals(datatypeName)) {
return null;
}
if ("Character".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "a");
}
if ("LanguageCode".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "en");
}
if ("Number".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "1");
}
if ("Charset".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "UTF-8");
}
if ("MimeType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "text/html");
}
if ("ContentType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "text/html");
}
if ("Text".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "text");
}
if ("Length".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "100");
}
if ("LinkTypes".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "LinkTypes");
}
if ("RulesType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "rows");
}
if ("AlignType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "left");
}
if ("ValignType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "top");
}
if ("MultiLength".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "100");
}
if ("Pixels".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "100");
}
if ("FrameType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "above");
}
if ("ValuetypeType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "data");
}
if ("IDREFS".equals(datatypeName)) {
return null;
// EcoreUtil.createFromString(eDataType, "a123");
}
if ("ScopeType".equals(datatypeName)) {
return EcoreUtil.createFromString(eDataType, "row");
}
return null;
}
@SuppressWarnings("unchecked")
private void setValue(EObject eObject, EStructuralFeature eStructuralFeature, Object value) {
if (eStructuralFeature.isMany()) {
((EList<Object>) eObject.eGet(eStructuralFeature)).add(value);
} else {
eObject.eSet(eStructuralFeature, value);
}
}
}