Skip to content

Commit

Permalink
Introduced NativeGraphExporter
Browse files Browse the repository at this point in the history
  • Loading branch information
rensink committed Aug 2, 2024
1 parent 07da7f0 commit fa58259
Show file tree
Hide file tree
Showing 5 changed files with 76 additions and 10 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,8 @@ public void report() throws IOException {
var exporter = Exporters.getExporter(ExportKind.GRAPH, fileType);
if (exporter == null) {
this.logger
.append("Pattern %s does not specify known export format: states saved in native GXL%n",
this.statePattern);
.append("Pattern %s does not specify known export format: states saved in native %s%n",
this.statePattern, FileType.STATE.getExtension());
} else {
this.logger.append("States saved as %s%n", fileType.getDescription());
}
Expand Down
6 changes: 4 additions & 2 deletions src/main/java/nl/utwente/groove/io/external/Exporters.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
import nl.utwente.groove.io.external.format.GraphExportListener.DotListener;
import nl.utwente.groove.io.external.format.LTS2ControlExporter;
import nl.utwente.groove.io.external.format.ListenerExporter;
import nl.utwente.groove.io.external.format.NativePorter;
import nl.utwente.groove.io.external.format.NativeGraphExporter;
import nl.utwente.groove.io.external.format.NativeResourcePorter;
import nl.utwente.groove.io.external.format.RasterExporter;
import nl.utwente.groove.io.external.format.TikzExporter;
import nl.utwente.groove.io.external.format.VectorExporter;
Expand Down Expand Up @@ -129,7 +130,8 @@ public static List<Exporter> getExporters() {
/** Creates the list of all known exporters. */
private static List<Exporter> createExporters() {
List<Exporter> result = new ArrayList<>();
result.add(NativePorter.getInstance());
result.add(NativeResourcePorter.getInstance());
result.add(NativeGraphExporter.getInstance());
result.add(RasterExporter.getInstance());
result.add(VectorExporter.getInstance());
result.add(AutPorter.instance());
Expand Down
4 changes: 2 additions & 2 deletions src/main/java/nl/utwente/groove/io/external/Importers.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
import nl.utwente.groove.io.external.format.AutPorter;
import nl.utwente.groove.io.external.format.ColImporter;
import nl.utwente.groove.io.external.format.EcorePorter;
import nl.utwente.groove.io.external.format.NativePorter;
import nl.utwente.groove.io.external.format.NativeResourcePorter;

/**
* Utilities for importers.
Expand Down Expand Up @@ -131,7 +131,7 @@ public static List<Importer> getImporters() {

private static List<Importer> createImporters() {
List<Importer> result = new ArrayList<>();
result.add(NativePorter.getInstance());
result.add(NativeResourcePorter.getInstance());
result.add(AutPorter.instance());
result.add(ColImporter.getInstance());
result.add(EcorePorter.instance());
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/* GROOVE: GRaphs for Object Oriented VErification
* Copyright 2003--2023 University of Twente
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the License.
*
* $Id$
*/
package nl.utwente.groove.io.external.format;

import java.io.File;
import java.io.IOException;

import nl.utwente.groove.grammar.aspect.GraphConverter;
import nl.utwente.groove.grammar.model.ResourceKind;
import nl.utwente.groove.io.FileType;
import nl.utwente.groove.io.external.AbstractExporter;
import nl.utwente.groove.io.external.Exportable;
import nl.utwente.groove.io.external.PortException;
import nl.utwente.groove.io.graph.GxlIO;

/**
* Import and export resources native to GROOVE, such as type and host graphs, and control programs
* @author Harold Bruijntjes
* @version $Revision$
*/
public class NativeGraphExporter extends AbstractExporter {
private NativeGraphExporter() {
super(ExportKind.GRAPH);
register(ResourceKind.TYPE);
register(ResourceKind.HOST);
register(ResourceKind.RULE);
}

/** Registers a resource kind with its default file type. */
private void register(ResourceKind kind) {
register(kind.getFileType());
}

@Override
public void doExport(Exportable exportable, File file, FileType fileType) throws PortException {
var graph = GraphConverter.toAspect(exportable.graph());
try {
GxlIO.instance().saveGraph(graph.toPlainGraph(), file);
} catch (IOException e) {
throw new PortException(e);
}
}

/** Returns the singleton instance of this class. */
public static final NativeGraphExporter getInstance() {
return instance;
}

private static final NativeGraphExporter instance = new NativeGraphExporter();
}
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@
* @author Harold Bruijntjes
* @version $Revision$
*/
public class NativePorter extends AbstractResourcePorter {
private NativePorter() {
public class NativeResourcePorter extends AbstractResourcePorter {
private NativeResourcePorter() {
register(ResourceKind.TYPE);
register(ResourceKind.HOST);
register(ResourceKind.RULE);
Expand Down Expand Up @@ -137,9 +137,9 @@ public void doExport(Exportable exportable, File file, FileType fileType) throws
}

/** Returns the singleton instance of this class. */
public static final NativePorter getInstance() {
public static final NativeResourcePorter getInstance() {
return instance;
}

private static final NativePorter instance = new NativePorter();
private static final NativeResourcePorter instance = new NativeResourcePorter();
}

0 comments on commit fa58259

Please sign in to comment.