/** * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ * $Id: Traductor.java,v 1.1 2008/01/24 00:10:51 cupi3 Exp $ * Universidad de los Andes (Bogotá - Colombia) * Departamento de Ingeniería de Sistemas y Computación * Licenciado bajo el esquema Academic Free License version 2.1 * * Proyecto Cupi2 (http://cupi2.uniandes.edu.co) * Ejercicio: n7_traductor * Autor: Daniel Francisco Romero - 27-jun-2006 * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */ package uniandes.cupi2.traductor.servidor; import java.io.Serializable; import java.util.ArrayList; /** * Traductor de palabras de español, inglés, francés e italiano. * inv: * espanolIngles != null * espanolFrances != null * espanolItaliano != null * * En el vector espanolIngles no hay palabras repetidas * En el vector espanolFrances no hay palabras repetidas * En el vector espanolItaliano no hay palabras repetidas * * En el vector espanolIngles no hay traducciones repetidas * En el vector espanolFrances no hay traducciones repetidas * En el vector espanolItaliano no hay traducciones repetidas */ public class Traductor implements Serializable { // ----------------------------------------------------------------// Constantes // ----------------------------------------------------------------/** * */ private static final long serialVersionUID = 1L;
1/9
Traductor
/** * Idioma inglés */ public final static int INGLES = 0; /** * Idioma francés */ public final static int FRANCES = 1; /** * Idioma italiano */ public final static int ITALIANO = 2; /** * Idioma español */ public final static int ESPANOL = 3; // ----------------------------------------------------------------// Atributos // ----------------------------------------------------------------/** * Conjunto de traducciones del español al inglés */ private ArrayList espanolIngles; /** * Conjunto de traducciones del español al francés */ private ArrayList espanolFrances; /** * Conjunto de traducciones del español al italiano */ private ArrayList espanolItaliano; // ----------------------------------------------------------------// Constructores // ----------------------------------------------------------------/** * Crea al traductor con los diccionarios vacíos. * post: Se creó el traductor con los diccionarios vacíos.
2/9
Traductor
*/ public Traductor( ) { espanolIngles = new ArrayList( ); espanolFrances = new ArrayList( ); espanolItaliano = new ArrayList( ); // Verifica el invariante verificarInvariante( ); } // ----------------------------------------------------------------// Métodos // ----------------------------------------------------------------/** * Agrega al diccionario una traducción de una palabra en español a un idioma dado. * post: La traducción fue adicionada al diccionario del idioma especificado. * @param pal es la palabra - pal != null y pal != "" * @param trad es la traducción - trad != null y trad != "" * @param idDestino es el idioma destino - idDestino pertenece a {FRANCES, INGLES, ITALIANO} * @return True si la palabra pudo ser adicionada al diccionario o false en caso contrario. */ public boolean agregarTraduccion( String pal, String trad, int idDestino ) { boolean agregada = false; // Busca la palabra en el diccionario del idioma Traduccion laTraduccion = traducirDeEspanol( pal, idDestino ); // Verifica que la palabra ni la traducción existan if( laTraduccion == null && !existeTraduccion( idDestino, trad ) ) { // Obtiene el arreglo de las traducciones correspondientes al idioma ArrayList traducciones = obtenerDiccionario( idDestino ); // Agrega la palabra con su traducción al diccionario traducciones.add( new Traduccion( pal, trad ) ); agregada = true; // Verifica el invariante verificarInvariante( ); } // Indica si la palabra fue agregada return agregada; } /** * Dada la palabra de búsqueda y el idioma al que se quiere traducir, retorna la traducción
3/9
Traductor
correspondiente. * @param palabra es la palabra a buscar - palabra != null y palabra se encuentra en español * @param idiomaTraduccion es el idioma al que se va a traducir la palabra idiomaTraduccion pertenece {FRANCES, INGLES, ITALIANO} * @return Traducción de la palabra en el idioma solicitado. Si no encuentra la palabra retorna null */ private Traduccion traducirDeEspanol( String palabra, int idiomaTraduccion ) { // Obtiene el arreglo de traducciones correspondiente al idioma de traducción ArrayList traducciones = obtenerDiccionario( idiomaTraduccion ); Traduccion traduccion = null; // Busca la palabra como palabra base en las traducciones for( int i = 0; i