
de.uni.freiburg.iig.telematik.jagal.ts.serialize.TSSerialization Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of JAGAL Show documentation
Show all versions of JAGAL Show documentation
JAGAL provides implementations for directed graphs (weighted and unweighted) and various types of transition systems as well as utils for graph traversal and modification.
The newest version!
package de.uni.freiburg.iig.telematik.jagal.ts.serialize;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import de.invation.code.toval.validate.ParameterException;
import de.invation.code.toval.validate.ParameterException.ErrorCode;
import de.invation.code.toval.validate.Validate;
import de.uni.freiburg.iig.telematik.jagal.ts.abstr.AbstractState;
import de.uni.freiburg.iig.telematik.jagal.ts.abstr.AbstractTransitionRelation;
import de.uni.freiburg.iig.telematik.jagal.ts.abstr.AbstractTransitionSystem;
import de.uni.freiburg.iig.telematik.jagal.ts.labeled.abstr.AbstractLabeledTransitionSystem;
import de.uni.freiburg.iig.telematik.jagal.ts.serialize.formats.TSSerializationFormat;
import de.uni.freiburg.iig.telematik.jagal.ts.serialize.serializer.LTSSerializer_Petrify;
public class TSSerialization {
public static ,
T extends AbstractTransitionRelation,
O extends Object>
TSSerializer
getSerializer(AbstractTransitionSystem ts, TSSerializationFormat format) throws ParameterException, SerializationException{
switch(format){
case PETRIFY:
if(ts instanceof AbstractLabeledTransitionSystem)
return new LTSSerializer_Petrify((AbstractLabeledTransitionSystem) ts);
throw new SerializationException(SerializationException.ErrorCode.UNSUPPORTED_NET_TYPE, ts.getClass());
default:
throw new SerializationException(SerializationException.ErrorCode.UNSUPPORTED_FORMAT, format);
}
}
public static ,
T extends AbstractTransitionRelation,
O extends Object>
String
serialize(AbstractTransitionSystem ts, TSSerializationFormat format)
throws SerializationException, ParameterException{
Validate.notNull(ts);
Validate.notNull(format);
StringBuilder builder = new StringBuilder();
builder.append(format.getFileFormat().getFileHeader());
builder.append(getSerializer(ts, format).serialize());
builder.append(format.getFileFormat().getFileFooter());
return builder.toString();
}
public static ,
T extends AbstractTransitionRelation,
O extends Object>
void
serialize(AbstractTransitionSystem ts, TSSerializationFormat format, String fileName, String path)
throws SerializationException, ParameterException, IOException{
Validate.notNull(ts);
Validate.notNull(format);
Validate.notNull(path);
Validate.notNull(fileName);
//Check if path and file name are valid
File cPath = new File(path);
if(!cPath.exists())
cPath.mkdirs();
if(!cPath.isDirectory())
throw new IOException(path + " is not a valid path!");
if(fileName.isEmpty())
throw new ParameterException(ErrorCode.EMPTY);
TSSerializer serializer = getSerializer(ts, format);
File file = new File(String.format("%s%s.%s", path, fileName, format.getFileFormat().getFileExtension()));
FileWriter output;
if(file.exists())
file.delete();
file.createNewFile();
output = new FileWriter(file, true);
output.write(format.getFileFormat().getFileHeader());
output.write(serializer.serialize());
output.write(format.getFileFormat().getFileFooter());
output.close();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy