// GraphTea Project: http://github.com/graphtheorysoftware/GraphTea // Copyright (C) 2012 Graph Theory Software Foundation: http://GraphTheorySoftware.com // Copyright (C) 2008 Mathematical Science Department of Sharif University of Technology // Distributed under the terms of the GNU General Public License (GPL): http://www.gnu.org/licenses/ package graphtea.extensions.reports.boundcheck; import graphtea.extensions.io.g6format.SaveGraph6Format; import graphtea.extensions.reports.boundcheck.forall.IterGraphs; import graphtea.extensions.reports.boundcheck.forall.Sizes; import graphtea.extensions.reports.boundcheck.forall.filters.Bounds; import graphtea.extensions.reports.boundcheck.forall.filters.Filters; import graphtea.extensions.reports.boundcheck.forall.filters.GeneratorFilters; import graphtea.graph.graph.GraphModel; import graphtea.graph.graph.RenderTable; import graphtea.platform.lang.ArrayX; import graphtea.platform.parameter.Parameter; import graphtea.platform.parameter.Parametrizable; import graphtea.plugins.main.saveload.core.GraphIOException; import graphtea.plugins.reports.extension.GraphReportExtension; import graphtea.plugins.reports.extension.GraphReportExtensionAction; import javax.swing.*; import java.io.File; import java.util.Vector; public class ConjectureChecking implements GraphReportExtension, Parametrizable { public ConjectureChecking() { gfilters = Filters.getFilterNames(); boundType = Bounds.getBoundNames(); generators = GeneratorFilters.getGenFilters(); PostP = new ArrayX<>("No postprocessing"); PostP.addValidValue("Equality Filter"); PostP.addValidValue("Max Filter"); PostP.addValidValue("Min Filter"); } @Parameter(name = "Bound Check", description = "") public boolean conjCheck = false; @Parameter(name = "Connected", description = "") public boolean connected = true; @Parameter(name = "Num Of Nodes", description = "") public int numOfNodes = 9; // @Parameter(name = "Up to", description = "") // public boolean upto = false; @Parameter(name = "Filter", description = "") public ArrayX<String> gfilters; @Parameter(name = "Graph Generators", description = "") public ArrayX<String> generators; @Parameter(name = "Bound Type", description = "The type of bound.") public ArrayX<String> boundType; @Parameter(name="Iterative", description = "") public boolean iterative = false; @Parameter(name="Post Processing Type", description = "") public static ArrayX<String> PostP; @Parameter(name="Post Processing Value",description = "This is the value" + "which the equality post-processing filter uses to compare.") public static String ppvalue = "0"; @Parameter(name="Graph Type", description = "Type of graphs") public ArrayX<String> GraphType=new ArrayX<>("all","tree","custom"); String currentType = "all"; int size = 0; public String getName() { return "Bound Check"; } public String getDescription() { return ""; } public Object calculate(GraphModel g) { if(PostP.getValue().equals("No postprocessing")) RenderTable.noFilter=true; if(GraphType.getValue().equals("custom")) { currentType=JOptionPane.showInputDialog("Please enter the cutom graph6 format file:"); size= Integer.parseInt(JOptionPane.showInputDialog("Please enter the number of graphs in file:")); } else { currentType=GraphType.getValue(); currentType=currentType+numOfNodes; size= Sizes.sizes.get(currentType); } if(!conjCheck) { GraphReportExtensionAction.ig=null; IterGraphs itg=new IterGraphs(conjCheck,iterative,currentType, size,boundType.getValue(),generators.getValue(), PostP.getValue(), Filters.getCorrectFilter(gfilters)); Vector<GraphModel> gs = itg.wrapper_generate(); String nameOfFile = JOptionPane.showInputDialog("Please enter tthe name of a file in which the " + "graphs will be saved.:"); SaveGraph6Format sgf = new SaveGraph6Format(); File f = new File(nameOfFile); for(GraphModel gg : gs) { try { sgf.write(f, gg); } catch (GraphIOException e) { e.printStackTrace(); } } return "The bound check is disabled. " + "The graphs are generated and saved in the file " + nameOfFile; } GraphReportExtensionAction.ig=new IterGraphs(conjCheck,iterative,currentType, size,boundType.getValue(),generators.getValue(), PostP.getValue(), Filters.getCorrectFilter(gfilters)); if(conjCheck) return "Conjecture Checking is enabled."; return "Conjecture Checkign is disabled."; } @Override public String getCategory() { return null; } @Override public String checkParameters() { return null; } }