All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.uni.freiburg.iig.telematik.sepia.serialize.AnalysisContextSerializer Maven / Gradle / Ivy

package de.uni.freiburg.iig.telematik.sepia.serialize;

import java.io.IOException;
import java.util.Arrays;
import java.util.Map;

import org.w3c.dom.Element;

import de.invation.code.toval.misc.soabase.SOABase;
import de.uni.freiburg.iig.telematik.sepia.parser.pnml.ifnet.AnalysisContextParser;
import de.uni.freiburg.iig.telematik.sepia.petrinet.ifnet.concepts.AnalysisContext;
import de.uni.freiburg.iig.telematik.sewol.accesscontrol.acl.ACLModel;

public class AnalysisContextSerializer {
	
	public static final String TYPE_URI = "http://ifnml.process-security.de/grammar/v1.0/analysiscontext";
	
	private AnalysisContext analysisContext = null;
	private XMLSerializationSupport support = null;
	
	public AnalysisContextSerializer(AnalysisContext analysisContext){
		this.analysisContext = analysisContext;
		support = new XMLSerializationSupport("analysiscontext");
	}
	
	private void addContent() {
		support.getRootElement().setAttribute("id", analysisContext.getName());
		support.getRootElement().setAttribute("type", TYPE_URI);
		
		// Add AC model name
		Element acModelElement = support.createElement("acmodel");
		acModelElement.setTextContent(analysisContext.getACModel().getName());
		support.getRootElement().appendChild(acModelElement);
		
		// Add subject descriptors
		Element subjectDescriptorsElement = support.createElement("subjectdescriptors");
		Map descriptors = analysisContext.getSubjectDescriptors();
		for (String activity : descriptors.keySet()) {
			Element subjectDescriptorElement = support.createElement("subjectdescriptor");
			subjectDescriptorElement.appendChild(support.createTextElement("activity", activity));
			subjectDescriptorElement.appendChild(support.createTextElement("subject", descriptors.get(activity)));
			subjectDescriptorsElement.appendChild(subjectDescriptorElement);
		}
		support.getRootElement().appendChild(subjectDescriptorsElement);
	}
	
	public String serialize() throws SerializationException {
		addContent();
		return support.serialize();
	}
	
	public void serialize(String path, String fileName) throws SerializationException, IOException {
		addContent();
		support.serialize(path, fileName, getFileExtension());
	}
	
	protected String getFileExtension(){
		return "acon";
	}
	
	public static void main(String[] args) throws Exception {
		SOABase context = new SOABase("context1");
		context.setActivities(Arrays.asList("act1","act2"));
		context.setSubjects(Arrays.asList("Gerd"));
		ACLModel acl = new ACLModel("acl1", context);
		acl.addActivityPermission("Gerd", "act1");
		AnalysisContext c = new AnalysisContext("analysisContext1", acl, true);
		c.setSubjectDescriptor("act1", "Gerd");
		
		AnalysisContextSerializer serializer = new AnalysisContextSerializer(c);
		serializer.serialize("/Users/stocker/Desktop/", "test");
		
		AnalysisContext parsedContext = AnalysisContextParser.parse("/Users/stocker/Desktop/test.acon", true, Arrays.asList(acl));
		System.out.println(parsedContext);
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy