/******************************************************************************* * Copyright (c) 2014 itemis AG 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 * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Mark Broerkens (itemis AG) - initial API and implementation *******************************************************************************/ package org.eclipse.rmf.tests.reqif10.serialization.uc001.tc1250; import java.math.BigInteger; import javax.xml.datatype.DatatypeConfigurationException; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.util.FeatureMapUtil; import org.eclipse.rmf.reqif10.AttributeDefinitionXHTML; import org.eclipse.rmf.reqif10.AttributeValueXHTML; import org.eclipse.rmf.reqif10.DatatypeDefinition; import org.eclipse.rmf.reqif10.DatatypeDefinitionXHTML; import org.eclipse.rmf.reqif10.ReqIF10Factory; 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.XhtmlDivType; import org.eclipse.rmf.reqif10.xhtml.XhtmlFactory; import org.eclipse.rmf.reqif10.xhtml.XhtmlObjectType; import org.eclipse.rmf.reqif10.xhtml.XhtmlStrongType; import org.eclipse.rmf.tests.reqif10.serialization.util.SimpleModelBuilder; @SuppressWarnings("nls") public class TC1250ExternalFilesBuilder extends SimpleModelBuilder { final static String LAST_CHANGE_STRING = "2012-04-07T01:51:37.112+02:00"; final static String TEST_CASE_ID = "TC1700"; // datatypes DatatypeDefinitionXHTML datatypeDefinitionXhtml; // SpecObjectTypes SpecObjectType specObjectType; AttributeDefinitionXHTML attributeDefinitionXhtml; // SpecificationTypes SpecificationType specificationType; // SpecObjects SpecObject specObject1; SpecObject specObject2; SpecObject specObject3; SpecObject specObject4; SpecObject specObject5; SpecObject specObject6; SpecObject specObject7; // Specifications Specification specification; public TC1250ExternalFilesBuilder() throws Exception { super("ID_TC1250_ExternalFiles", "TC 1250 'External Files'"); } @Override public void createDatatypes() throws Exception { datatypeDefinitionXhtml = ReqIF10Factory.eINSTANCE.createDatatypeDefinitionXHTML(); datatypeDefinitionXhtml.setIdentifier("ID_TC1250_DatatypeDefinitionXhtml"); datatypeDefinitionXhtml.setLongName("ReqIF.Name"); datatypeDefinitionXhtml.setLastChange(toDate(LAST_CHANGE_STRING)); EList<DatatypeDefinition> datatypes = getReqIF().getCoreContent().getDatatypes(); datatypes.add(datatypeDefinitionXhtml); } @Override public void createSpecObjectTypes() throws Exception { specObjectType = ReqIF10Factory.eINSTANCE.createSpecObjectType(); specObjectType.setIdentifier("ID_TC1250_SpecObjectType"); specObjectType.setLongName("TC1250 SpecObjectType"); specObjectType.setLastChange(toDate(LAST_CHANGE_STRING)); attributeDefinitionXhtml = ReqIF10Factory.eINSTANCE.createAttributeDefinitionXHTML(); attributeDefinitionXhtml.setIdentifier("ID_TC1250_AttributeDefinitionXhtml"); attributeDefinitionXhtml.setLongName("TC1250 XHTML"); attributeDefinitionXhtml.setLastChange(toDate(LAST_CHANGE_STRING)); attributeDefinitionXhtml.setType(datatypeDefinitionXhtml); specObjectType.getSpecAttributes().add(attributeDefinitionXhtml); getReqIF().getCoreContent().getSpecTypes().add(specObjectType); } @Override public void createSpecificationTypes() throws Exception { specificationType = ReqIF10Factory.eINSTANCE.createSpecificationType(); specificationType.setIdentifier("ID_TC1250_SpecificationType"); specificationType.setLongName("TC1250 SpecificationType"); specificationType.setLastChange(toDate(LAST_CHANGE_STRING)); getReqIF().getCoreContent().getSpecTypes().add(specificationType); } @Override public void createSpecifications() throws Exception { specification = ReqIF10Factory.eINSTANCE.createSpecification(); specification.setIdentifier("ID_TC1250_Specification"); specification.setType(specificationType); specification.setLastChange(toDate(LAST_CHANGE_STRING)); getReqIF().getCoreContent().getSpecifications().add(specification); // TODO: Build the 7 elements addSpecHierarchy(specObject1); addSpecHierarchy(specObject2); addSpecHierarchy(specObject3); addSpecHierarchy(specObject4); addSpecHierarchy(specObject5); addSpecHierarchy(specObject6); addSpecHierarchy(specObject7); } private SpecHierarchy addSpecHierarchy(SpecObject specObject) throws DatatypeConfigurationException { SpecHierarchy specHierarchy = ReqIF10Factory.eINSTANCE.createSpecHierarchy(); specHierarchy.setIdentifier("sh-for-" + specObject.getIdentifier()); specHierarchy.setLastChange(toDate(LAST_CHANGE_STRING)); specHierarchy.setObject(specObject); specification.getChildren().add(specHierarchy); return specHierarchy; } @Override public void createSpecObjects() throws Exception { specObject1 = buildImage(1, "rmf-logo-300.png", 300, 131); specObject2 = buildSpecObject(2, "Microsoft Word", "word", ".doc", "application/msword"); specObject3 = buildSpecObject(3, "Microsoft Word", "word", ".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); specObject4 = buildSpecObject(4, "Microsoft Excel", "excel", ".xls", "application/vnd.ms-excel"); specObject5 = buildSpecObject(5, "Microsoft Excel", "excel", ".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); specObject6 = buildSpecObject(6, "Microsoft Powerpoint", "powerpoint", ".ppt", "application/vnd.ms-powerpoint"); specObject7 = buildSpecObject(7, "Microsoft Powerpoint", "powerpoint", ".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"); } private SpecObject buildImage(int i, String filename, int width, int height) throws Exception { // specObject SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject(); specObject.setIdentifier("ID_TC1250_SpecObject" + i); specObject.setLastChange(toDate(LAST_CHANGE_STRING)); specObject.setType(specObjectType); AttributeValueXHTML attributeValueXhtml = ReqIF10Factory.eINSTANCE.createAttributeValueXHTML(); attributeValueXhtml.setDefinition(attributeDefinitionXhtml); specObject.getValues().add(attributeValueXhtml); XhtmlContent xhtmlContent = ReqIF10Factory.eINSTANCE.createXhtmlContent(); XhtmlDivType div = XhtmlFactory.eINSTANCE.createXhtmlDivType(); XhtmlObjectType img = XhtmlFactory.eINSTANCE.createXhtmlObjectType(); img.setType("image/png"); img.setData("files/" + filename); img.setWidth(new BigInteger(width + "")); img.setHeight(new BigInteger(height + "")); div.getObject().add(img); xhtmlContent.setXhtml(div); attributeValueXhtml.setTheValue(xhtmlContent); getReqIF().getCoreContent().getSpecObjects().add(specObject); return specObject; } private SpecObject buildSpecObject(int i, String fullName, String baseFileName, String extension, String type) throws Exception { // specObject SpecObject specObject = ReqIF10Factory.eINSTANCE.createSpecObject(); specObject.setIdentifier("ID_TC1250_SpecObject" + i); specObject.setLastChange(toDate(LAST_CHANGE_STRING)); specObject.setType(specObjectType); AttributeValueXHTML attributeValueXhtml = ReqIF10Factory.eINSTANCE.createAttributeValueXHTML(); attributeValueXhtml.setDefinition(attributeDefinitionXhtml); specObject.getValues().add(attributeValueXhtml); XhtmlContent xhtmlContent = ReqIF10Factory.eINSTANCE.createXhtmlContent(); XhtmlDivType div = XhtmlFactory.eINSTANCE.createXhtmlDivType(); div.getDiv().add(makeLabel("START", fullName, extension)); // The actual Object XhtmlObjectType obj = XhtmlFactory.eINSTANCE.createXhtmlObjectType(); obj.setType(type); obj.setData("files/" + baseFileName + extension); obj.setWidth(new BigInteger("96")); obj.setHeight(new BigInteger("96")); div.getObject().add(obj); // The Object's screenshot and alt text XhtmlObjectType img = XhtmlFactory.eINSTANCE.createXhtmlObjectType(); img.setType("image/png"); img.setData("files/" + baseFileName + ".png"); img.setWidth(new BigInteger("96")); img.setHeight(new BigInteger("96")); img.getMixed().add(FeatureMapUtil.createTextEntry("This text is shown if altenative image can't be shown:" + baseFileName + extension)); obj.getObject().add(img); div.getDiv().add(makeLabel("END", fullName, extension)); xhtmlContent.setXhtml(div); attributeValueXhtml.setTheValue(xhtmlContent); getReqIF().getCoreContent().getSpecObjects().add(specObject); return specObject; } private XhtmlDivType makeLabel(String label, String name, String extension) { XhtmlStrongType strong = XhtmlFactory.eINSTANCE.createXhtmlStrongType(); strong.getXhtmlInlineMix().add(FeatureMapUtil.createTextEntry(name + "(" + extension + ")")); XhtmlDivType div = XhtmlFactory.eINSTANCE.createXhtmlDivType(); div.getXhtmlFlowMix().add(FeatureMapUtil.createTextEntry(label + " -- ")); div.getStrong().add(strong); div.getXhtmlFlowMix().add(FeatureMapUtil.createTextEntry(" -- " + label)); return div; } }