package org.aim.cswrapper.aspect; import java.io.BufferedWriter; import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.Writer; import java.util.ArrayList; import java.util.Date; import java.util.List; public class MulticastDescriptionBuilder { private List<AspectDescription> aspectList; public MulticastDescriptionBuilder() { aspectList = new ArrayList<>(); } public void addAspectDescription(AspectDescription desc) { aspectList.add(desc); } public void addAspectDescription(List<AspectDescription> descriptionList) { aspectList.addAll(descriptionList); } private void buildFile(File outFile) { try { buildFile(new FileWriter(outFile)); } catch (IOException e) { throw new RuntimeException(e); } } private static void writeHeader(BufferedWriter writer) throws IOException { writer.write(String.format("// Generated at %s", new Date())); writer.newLine(); writer.write("using AIM_NET.Aspects; using PostSharp.Extensibility; using System; using System.Collections.Generic; using System.Linq; using System.Text;"); writer.newLine(); writer.newLine(); } private void buildFile(Writer outWriter) throws IOException { BufferedWriter writer = new BufferedWriter(outWriter); writeHeader(writer); for (AspectDescription adesc : aspectList) { writer.write(adesc.toString()); writer.newLine(); } writer.close(); } public void buildFile(String outFiles) { for (String file : outFiles.split(";")) { buildFile(new File(file)); } } public static void clearDescriptionFile(String descFiles) { for (String file : descFiles.split(";")) { try { BufferedWriter writer = new BufferedWriter(new FileWriter(file)); writeHeader(writer); writer.close(); } catch (IOException e) { throw new RuntimeException(e); } } } }