Package Controllers

Source Code of Controllers.CjtElementsController

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package Controllers;

import Modules.CjtElements;
import Modules.Element;
import Views.MainFrame;
import java.util.List;
import main.Dimension;

/**
*
* @author 11.2
*/
public class CjtElementsController implements Observable{
   
    private CjtElements cjtElements;   
    private ConfigurationController configurationController;
    private List<Controllers.Observer> observers;   
    private MainFrame mainFrame;
    private int idPos[];
    boolean consult;
   
    /**
     * Crea un controlador del conjunto de elementos.
     * @param newConfigurationController Enlace al controlador de configuracion.
     * @param newCjtElements Enlace al conjunto de elementos.
     * @param newMainFrame Enlace al frame.
     * @param newObservers Lista de observadores del conjunto.    
     */
    public CjtElementsController(ConfigurationController newConfigurationController, CjtElements newCjtElements, MainFrame newMainFrame, List<Controllers.Observer> newObservers){        
        this.configurationController = newConfigurationController;
        this.cjtElements = newCjtElements;       
        this.observers = newObservers;
        this.mainFrame = newMainFrame;
        this.cjtElements.setCjtElementsController(this);
    }
   
    /**
     * Incorpora un nuevo observador.
     * @param observer Observador.    
     */
    @Override
    public void addObserver(Observer observer){
        observers.add(observer);
    }
   
    /**
     * Avisa a todos los observadores del elemento eliminado.
     * @param id Identificador del elemento eliminado.    
     */
    @Override
    public void notifyObserver(int id){
        for(Controllers.Observer observer : observers){
            observer.update(id);
        }
    }
   
    /**
     * Visualiza el primer menu de la configuracion del conjunto de elementos.
     */
    public void main(){
       mainFrame.cjtElementsPanel();
    }
   
    /**
     * Visualiza el primer menu de la configuracion del conjunto de elementos.
     */
    public void goBack(){
        mainFrame.removeCjtElementsView();
        mainFrame.cjtElementsPanel();
       
    }
   
    /**
     * Incorpora un nuevo pack al conjunto de elementos.
     * @param namePack Nombre del pack.  
     * @param element1 Identificador del mueble.  
     * @param element2 Identificador del item.  
     */
    public void addPack(String namePack, int element1, int element2){
        Element elem = cjtElements.getElement(element1);
        Element newElement = new Element(namePack, elem.getDimension().getX(), elem.getDimension().getY(),
                                        elem.getDimensionMax().getX(), elem.getDimensionMax().getY(),
                                        elem.getDimensionMin().getX(), elem.getDimensionMin().getY(),
                                        true, false, "Pack");
        cjtElements.set(newElement);
        cjtElements.setPack(element1, element2, (cjtElements.getCount()-1));
    }
   
    /**
     * Consultora del 'size' del conjunto.
     * @return El 'size' del conjunto.
     */
    public int getCjtElementSize(){
        return cjtElements.size();
    }
   
    /**
     * Consultora del ultimo id valido.
     * @return El id disponible.
     */
    public int getCjtElementCount(){
        return cjtElements.getCount();
    }
   
    /**
     * Inicia la operacion deseada.
     * @param op Operacion deseada.
     */
    public void selector(String op){       
        mainFrame.removeCjtElementsView();       
            if(op.equals("1")){               
                 mainFrame.showCjtElementsPanel();
            }
            else if(op.equals("2")){                             
                mainFrame.deleteCjtElementsPanel();
            }                    
            else if(op.equals("3")){
                mainFrame.addMenuCjtElementsPanel();
            }
            else if(op.equals("4")){
                mainFrame.editPanel();         
            }
            else if(op.equals("5")){                               
                this.configurationController.main();
            }      
    }
   
    /** Selecciona el tipo menu para crear elemento.
     * @param op Menu deseado.
     */
    public void selecAddType(String op){       
        mainFrame.removeCjtElementsView();       
            if(op.equals("1")){
                mainFrame.addCjtElementsPanel();
            }
            else if(op.equals("2")){
                mainFrame.addPackCjtElementsPanel();
            }                
    }   
   
    /** Elimina el elemento deseado.
     * @param idTarget Identificador del elemento que se desea eliminar.
     * Elimina el elemento y avisa a sus observadores.
     */
    public void delete(int idTarget){          
        this.cjtElements.remove(idTarget);
        this.notifyObserver(idTarget);      
    }
   
    /** Consulta la existencia el elemento deseado.
     * @param id Identificador del elemento que se desea consultar su existencia.
     * @return 'true' si existe, 'false' en caso contrario.
     */
    public boolean exists(int id){
        return this.cjtElements.existsKey(id);
    }  
   
    /** Consulta el elemento deseado.
     * @param id Identificador del elemento que se desea consultar.
     * @return Elemento identificador po 'id'.
     */
    public Element getElement(int id){
        return this.cjtElements.getElement(id);
    }
   
    /** Consulta si hay elementos.    
     * @return true si hay elementos, false en caso contrario.
     */
    public boolean consultCjtElementsInData(){
        if(cjtElements.size() == 0) consult = false;
        else consult = true;
        return consult;
    }
   
    /** Consulta los elementos del conjunto.    
     * @return Retorna los elementos en una matriz de Strings, para poder ser procesados por los paneles.
     */
    public String[][] getCjtElementsInData(){
        int size = cjtElements.size();
        if(size < 10) size = 10;
        String data[][] = new String [size][10];
        int id = 0;
        int tam = data[0].length;       
        if(tam == 0){
            data = new String[0][0];
            return data;
        }
        int vec[] = new int[cjtElements.size()];
        for(int i = 1; i <= this.cjtElements.getCount(); ++i){
                    if(exists(i)){                       
                        String[] list = new String[10];
                        getObject(i, list);  
                        data[id]= list;
                        vec[id] = i;
                        ++id;                      
                    }
                }
        if(cjtElements.size() < 10 && cjtElements.size() > 0){
            data[cjtElements.size()][0] = "";
        }
        idPos = vec;       
        return data;
    }
   
    /** Consulta de los identificadores de los elementos del conjunto.    
     * @return Retorna los identificadores de los elementos del conjunto.
     */
    public int[] getIdPos(){
        return idPos;
    }
   
    /** Consulta de los identificadores de los elementos del conjunto. 
     * @param list Vector de string que contiene los parametros del nuevo elemento.
     * @return Retorna el elemento creado con los aprametros del vector de strings.
     * Comprueba que los parametros son validos y crea el elemento.
     */
    public Element checkParameters(String[] list){
        int dimX, dimY, dimMaxX, dimMaxY, dimMinX, dimMinY;       
        boolean err, newIsTall, newStackable;
        Element elem = new Element();
        newIsTall = newStackable = false;
      
        dimMinX = Integer.parseInt(list[5]);
        dimMinY = Integer.parseInt(list[6]);
        dimMaxX = Integer.parseInt(list[3]);
        dimMaxY = Integer.parseInt(list[4]);
        dimX = Integer.parseInt(list[1]);
        dimY = Integer.parseInt(list[2]);
       
        err = (dimMinX < 1) || (dimMinY < 1)
                || (dimMaxX < dimMinX) || (dimMaxY < dimMinY)
                || (dimX < dimMinX) || (dimMaxX < dimX)
                || (dimY < dimMinY) || (dimMaxY < dimY)
                || !(list[7].equals("Si") || (list[7].equals("No"))) || !(list[8].equals("Si") || (list[8].equals("No")));
       
        if(!list[9].equals("Pack") && !list[9].equals("Mueble") && !list[9].equals("Item")) {
            err=true;
        }
        if(err == false){          
            if(list[7].equals("Si")) {
                newIsTall = true;
            }
            if(list[8].equals("Si")) {
                newStackable = true;
            }           
            elem = new Element(list[0], dimX, dimY, dimMaxX, dimMaxY, dimMinX, dimMinY, newIsTall, newStackable, list[9]);          
        }
        if(err == true) {
            elem = null;
        }
        return elem;
    }
   
    /** Consulta un elemento. 
     * @param id Identificador del elemento.
     * @param list Vector de string que contendra los parametros del elemento.
     * @return Retorna 'true' si existia el elemento, 'false' en caso contrario.
     * Comprueba que existe el elemento y introduce sus parametros en 'list'.
     */
    public boolean getObject(int id, String[] list){
        Dimension dim, dimMax, dimMin;
        boolean exist = this.cjtElements.existsKey(id);
        if(exist){           
            Element ob = this.cjtElements.getElement(id);
            dim = ob.getDimension();
            dimMax = ob.getDimensionMax();
            dimMin = ob.getDimensionMin();
       
            list[0] = ob.getName();
            list[1] = Integer.toString(dim.getX());
            list[2] = Integer.toString(dim.getY());
            list[3] = Integer.toString(dimMax.getX());
            list[4] = Integer.toString(dimMax.getY());
            list[5] = Integer.toString(dimMin.getX());
            list[6] = Integer.toString(dimMin.getY());
            if(ob.getIsTall()) {
                list[7] "Si";
            }
            else {
                list[7] = "No";
            }
            if(ob.getIsStackable()) {
                list[8] "Si";
            }
            else {
                list[8] = "No";
            }
            list[9] = ob.getType();
        }       
        return exist;
    }  
   
    /** Consulta un elemento. 
     * @param id Identificador del elemento.
     * @param list Vector de string que contiene los parametros del nuevo elemento.
     * @return Retorna 'true' si el nuevo elemento es valido, 'false' en caso contrario.
     * Comprueba que el elemento es valido y actualiza un elemento con los parametros en 'list'.
     */
    public boolean update(int id,String[] list){       
        boolean err;
        Element elem = this.checkParameters(list);       
        if(elem == null) {
            err = true;
        }
        else {
            err = false;
        }       
        if(err == false){
           this.cjtElements.update(id, elem);            
        }
        return err;   
    }   
   
    /** Consulta un elemento.
    
     * @param list Vector de string que contiene los parametros del nuevo elemento.
     * @return Retorna 'true' si el nuevo elemento es valido, 'false' en caso contrario.
     * Comprueba que el elemento es valido y forma un nuevo elemento con los parametros en 'list'.
     */
    public boolean add(String[] list){       
        boolean err;
        Element elem = this.checkParameters(list);       
        if(elem == null) {
            err = true;
        }
        else {
            err = false;
        }        
        if(err == false){           
            this.cjtElements.set(elem);
        }
        return err;   
    }
}
TOP

Related Classes of Controllers.CjtElementsController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.