This commit is contained in:
2017-07-05 23:41:07 -04:00
parent 67d5da86cf
commit ae6fd885e0
66 changed files with 324 additions and 502 deletions

View File

@@ -11,12 +11,11 @@ import org.w3c.dom.Document;
import java.util.ArrayList;
class Automata {
public class Automata {
private ArrayList<Estado> estados;
private ArrayList<Integer> estadosExistentes;
Automata(Document document) {
public Automata(Document document) {
setEstados(new ArrayList<>());
for (int i = 0; i < document.getElementsByTagName("transicion").getLength(); i++) {
char move = document.getElementsByTagName("movimiento").item(i).getTextContent().charAt(0);
@@ -60,15 +59,15 @@ class Automata {
}
}
ArrayList<Estado> getEstados() {
public ArrayList<Estado> getEstados() {
return estados;
}
private void setEstados(ArrayList<Estado> estados) {
public void setEstados(ArrayList<Estado> estados) {
this.estados = estados;
}
ArrayList<Integer> getEstadosExistentes() {
public ArrayList<Integer> getEstadosExistentes() {
return estadosExistentes;
}

View File

@@ -7,13 +7,13 @@
package cl.cromer.mt;
class Enlace {
public class Enlace {
private char si;
private char sj;
private char movimiento;
private Estado qj;
Enlace(char si, Estado qj, char sj, char move) {
public Enlace(char si, Estado qj, char sj, char move) {
setMovimiento(move);
setSj(sj);
setQj(qj);
@@ -32,7 +32,7 @@ class Enlace {
return this.sj;
}
private void setSj(char sj) {
public void setSj(char sj) {
this.sj = sj;
}
@@ -40,7 +40,7 @@ class Enlace {
return this.movimiento;
}
private void setMovimiento(char movimiento) {
public void setMovimiento(char movimiento) {
this.movimiento = movimiento;
}
@@ -48,7 +48,7 @@ class Enlace {
return qj;
}
private void setQj(Estado qj) {
public void setQj(Estado qj) {
this.qj = qj;
}

View File

@@ -12,20 +12,20 @@ public class Estado {
private final int q;
private final ArrayList<Enlace> enlaces;
Estado(int q) {
public Estado(int q) {
this.q = q;
enlaces = new ArrayList<>();
}
ArrayList<Enlace> getEnlaces() {
public ArrayList<Enlace> getEnlaces() {
return enlaces;
}
int getQ() {
public int getQ() {
return q;
}
boolean createLink(char si, Estado qj, char sj, char move) {
public boolean createLink(char si, Estado qj, char sj, char move) {
if (enlaces.isEmpty()) {
enlaces.add(new Enlace(si, qj, sj, move));
}

View File

@@ -12,7 +12,7 @@ import java.util.ArrayList;
/**
* Esta clase es un objeto para pasar entre los stage.
*/
class EstadosFinales {
public class EstadosFinales {
private ArrayList<Integer> estadosExistentes;
private ArrayList<Integer> estadosElegidos;
@@ -23,7 +23,7 @@ class EstadosFinales {
*
* @param maquina La maquina de turning a pasar entre stages
*/
EstadosFinales(Maquina maquina) {
public EstadosFinales(Maquina maquina) {
this.maquina = maquina;
this.estadosExistentes = maquina.getMaquina().getEstadosExistentes();
}
@@ -33,7 +33,7 @@ class EstadosFinales {
*
* @return Los estados que existen
*/
ArrayList<Integer> getEstadosExistentes() {
public ArrayList<Integer> getEstadosExistentes() {
return estadosExistentes;
}
@@ -50,7 +50,7 @@ class EstadosFinales {
* Devolver los estados elegidos por el usuario
* @return Los estados elegidos
*/
ArrayList<Integer> getEstadosElegidos() {
public ArrayList<Integer> getEstadosElegidos() {
return estadosElegidos;
}
@@ -59,7 +59,7 @@ class EstadosFinales {
*
* @param estadosElegidos Los estados elegidods nuevos
*/
void setEstadosElegidos(ArrayList<Integer> estadosElegidos) {
public void setEstadosElegidos(ArrayList<Integer> estadosElegidos) {
this.estadosElegidos = estadosElegidos;
}

View File

@@ -7,9 +7,6 @@
package cl.cromer.mt;
import jdk.internal.org.xml.sax.ErrorHandler;
import jdk.internal.org.xml.sax.SAXException;
import jdk.internal.org.xml.sax.SAXParseException;
import org.w3c.dom.Document;
import javax.xml.parsers.DocumentBuilder;
@@ -20,8 +17,6 @@ import java.io.*;
* Esta clase puede abrir y validar un archivo de XML. Se necesita un archivo mtbase.dtd
*/
class LeerXML {
private boolean error = false;
/**
* El metodo va a verificar que el archivo existe y que contiene XML valido. Si es valido devuelve el documento.
*
@@ -39,7 +34,6 @@ class LeerXML {
}
Document dc = createDocument(archivo);
if (dc == null) {
error = false;
return validarXML(archivo);
}
return dc;
@@ -65,13 +59,7 @@ class LeerXML {
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
SimpleErrorHandler seh = new SimpleErrorHandler();
db.setErrorHandler(seh);
documento = db.parse(archivo);
if (error) {
//MT.mostrarMensaje("Error", "El archivo " + archivo.getName() + " no contiene xml valido!");
return null;
}
documento.getDocumentElement().normalize();
return documento;
}
@@ -140,77 +128,4 @@ class LeerXML {
}
return temp;
}
/**
* Esta clase se usa para comprobar que el XML es valido.
*/
class SimpleErrorHandler implements ErrorHandler, org.xml.sax.ErrorHandler {
/**
* Un warning
*
* @param e La excepción
*
* @throws SAXException La excepción thrown
*/
public void warning(SAXParseException e) throws SAXException {
System.out.println(e.getMessage());
}
/**
* Un error
*
* @param e La excepción
*
* @throws SAXException La excepción thrown
*/
public void error(SAXParseException e) throws SAXException {
//System.out.println(e.getMessage());
error = true;
}
/**
* Un error fatal
*
* @param e La excepción
*
* @throws SAXException La excepción thrown
*/
public void fatalError(SAXParseException e) throws SAXException {
//System.out.println(e.getMessage());
error = true;
}
/**
* Un warning
*
* @param e La excepción
*/
@Override
public void warning(org.xml.sax.SAXParseException e) {
System.out.println(e.getMessage());
}
/**
* Un error
*
* @param e La excepción
*/
@Override
public void error(org.xml.sax.SAXParseException e) {
//System.out.println(e.getMessage());
error = true;
}
/**
* Un error fatal
*
* @param e La excepción
*/
@Override
public void fatalError(org.xml.sax.SAXParseException e) {
//System.out.println(e.getMessage());
error = true;
}
}
}

View File

@@ -53,11 +53,11 @@ public class MT extends Application {
*/
@Override
public void start(Stage primaryStage) throws Exception {
Parent root = FXMLLoader.load(getClass().getResource("mt.fxml"));
Parent root = FXMLLoader.load(getClass().getResource("fxml/mt.fxml"));
primaryStage.setTitle("Maquina de Turing");
Scene scene = new Scene(root, 640, 480);
scene.getStylesheets().add("/cl/cromer/mt/mt.css");
scene.getStylesheets().add("/cl/cromer/mt/css/mt.css");
primaryStage.setScene(scene);
primaryStage.setMinHeight(480);
primaryStage.setMinWidth(640);

View File

@@ -9,65 +9,62 @@ package cl.cromer.mt;
import org.w3c.dom.Document;
class Maquina {
public class Maquina {
private final Automata maquina;
private Estado estadoActual;
private Enlace enlaceActual;
private String cintaAnterior;
private int cabezal;
Maquina(Document document) {
public Maquina(Document document) {
maquina = new Automata(document);
reset();
}
Automata getMaquina() {
public Automata getMaquina() {
return maquina;
}
private Estado getEstadoActual() {
public Estado getEstadoActual() {
return estadoActual;
}
private void setEstadoActual(Estado estadoActual) {
public void setEstadoActual(Estado estadoActual) {
this.estadoActual = estadoActual;
}
private Enlace getEnlaceActual() {
public Enlace getEnlaceActual() {
return enlaceActual;
}
private void setEnlaceActual(Enlace enlaceActual) {
public void setEnlaceActual(Enlace enlaceActual) {
this.enlaceActual = enlaceActual;
}
private String getCintaAnterior() {
public String getCintaAnterior() {
return cintaAnterior;
}
private void setCintaAnterior(String cintaAnterior) {
public void setCintaAnterior(String cintaAnterior) {
this.cintaAnterior = cintaAnterior;
}
private int getCabezal() {
public int getCabezal() {
return cabezal;
}
private void setCabezal(int cabezal) {
public void setCabezal(int cabezal) {
this.cabezal = cabezal;
}
void reset() {
public void reset() {
setEstadoActual(maquina.getEstados().get(0));
setEnlaceActual(null);
setCintaAnterior("");
setCabezal(0);
}
boolean comprobarCadena(StringBuilder cinta, int[] estadoFinal) {
public boolean comprobarCadena(StringBuilder cinta, int[] estadoFinal) {
//estadoActual = maquina.getEstados().get(0);
int i;
for (i = 0; i < getEstadoActual().getEnlaces().size(); i++) {
@@ -106,7 +103,7 @@ class Maquina {
return false;
}
boolean comprobarCadenaS2S(StringBuilder cinta, int[] estadoFinal){
public boolean comprobarCadenaS2S(StringBuilder cinta, int[] estadoFinal) {
setCintaAnterior(cinta.toString());
int i;
for (i = 0; i < getEstadoActual().getEnlaces().size(); i++) {

View File

@@ -82,7 +82,7 @@ public class MenuController {
menuIndiv.setDisable(false);
menuLote.setDisable(false);
}
tableView = FXMLLoader.load(getClass().getResource("tabla.fxml"));
tableView = FXMLLoader.load(getClass().getResource("/cl/cromer/mt/fxml/tabla.fxml"));
VBox.setVgrow(tableView, Priority.ALWAYS);
tableView.skinProperty().addListener((source, oldWidth, newWidth) -> {
final TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");
@@ -108,11 +108,11 @@ public class MenuController {
// Obtener los estados finales:
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("estadosFinales.fxml"));
fxmlLoader.setLocation(getClass().getResource("/cl/cromer/mt/fxml/estadosFinales.fxml"));
Scene nuevaScene = new Scene(fxmlLoader.load(), 250, 250);
estadosFinales = new EstadosFinales(maquina);
nuevaScene.setUserData(estadosFinales);
nuevaScene.getStylesheets().add("/cl/cromer/mt/mt.css");
nuevaScene.getStylesheets().add("/cl/cromer/mt/css/mt.css");
Stage stage = new Stage();
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(parentStage);
@@ -158,10 +158,10 @@ public class MenuController {
Stage parentStage = (Stage) parentScene.getWindow();
FXMLLoader fxmlLoader = new FXMLLoader();
fxmlLoader.setLocation(getClass().getResource("lote.fxml"));
fxmlLoader.setLocation(getClass().getResource("/cl/cromer/mt/fxml/lote.fxml"));
Scene scene = new Scene(fxmlLoader.load(), 640, 480);
scene.setUserData(estadosFinales);
scene.getStylesheets().add("/cl/cromer/mt/mt.css");
scene.getStylesheets().add("/cl/cromer/mt/css/mt.css");
Stage stage = new Stage();
stage.initModality(Modality.WINDOW_MODAL);
stage.initOwner(parentStage);
@@ -172,7 +172,7 @@ public class MenuController {
stage.getIcons().add(new Image(getClass().getResourceAsStream("/cl/cromer/mt/images/icon.png")));
stage.show();
TableView<TablaData> tableView = FXMLLoader.load(getClass().getResource("tabla.fxml"));
TableView<TablaData> tableView = FXMLLoader.load(getClass().getResource("/cl/cromer/mt/fxml/tabla.fxml"));
VBox.setVgrow(tableView, Priority.ALWAYS);
tableView.skinProperty().addListener((source, oldWidth, newWidth) -> {
final TableHeaderRow header = (TableHeaderRow) tableView.lookup("TableHeaderRow");

View File

@@ -14,7 +14,6 @@ import javafx.beans.property.SimpleStringProperty;
*/
public class TablaData {
private final SimpleStringProperty primera;
private final SimpleStringProperty segunda;
/**