miércoles, 24 de mayo de 2017

JAX-WS returning map


Hace muchos años que había abandonado el blog, recordando viejos tiempos quise retomarlo y les traigo el siguiente ejemplo:

Hace unos días me solicitaron realizar un Core de servicios web en SOAP y REST, quise mandar la misma salida en ambos solo que uno como objeto JSON y otro como XML en el SOAP, en el JSON envío un Map y quise hacer lo mismo en el SOAP sin embargo el WAX-WS no permite retornar este tipo de objetos. Para ello realice una Clase Wrapper que dentro tuviera un objeto de tipo Map, y con ello se resolvió dicho tema.


Les dejo por aquí el ejemplo:


Clase Wrapper

import java.io.Serializable;
import java.util.Map;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

@XmlAccessorType(XmlAccessType.FIELD)
public class MapWrapper implements Serializable{
    private static final long serialVersionUID = 1L;
   
    private Map<String, Object> map;
   
    public MapWrapper() {}

    public MapWrapper(Map<String, Object> map) {
        this.map = map;
    }
   
    public Map<String, Object> getMap() {
        return map;
    }
   
    public void setMap(Map<String, Object> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder();
        builder.append("MapWrapper [map=");
        builder.append(map);
        builder.append("]");
        return builder.toString();
    }
       
   
}





 Método del WebService

    @WebMethod(operationName = "consultaCt")
    public MapWrapper consultaCt() {
        Map<String, Object> map = new HashMap<String,Object>();
        map.put("estatus", 1);
        map.put("msg", "Respuesta correcta");
        map.put("cts", ctBO.selectAll());
        MapWrapper mapWrapper = new MapWrapper(map);
        return mapWrapper;
    }
    

lunes, 7 de octubre de 2013

SAP JCO Connector

Hola buen día, hoy les traigo un ejemplo de conexión a SAP con JCO connector de JAVA, con la libreria 2.1.8 .

Aqui les muestro la clase de conexión:

import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.Client;
import com.sap.mw.jco.JCO.ParameterList;

public class Conexion {
    private ParameterList p_input;
    private ParameterList p_output;
    private Client cliente;
   
    public Conexion() {
        this.p_input=JCO.createParameterList();
        this.p_output=JCO.createParameterList();
        this.cliente= JCO.createClient("clave_user", "user", "pass+", "idioma", "ipserver", "puerto", "type_user");
    }
   
    public ParameterList getP_input() {
        return p_input;
    }
    public void setP_input(ParameterList p_input) {
        this.p_input = p_input;
    }
    public ParameterList getP_output() {
        return p_output;
    }
    public void setP_output(ParameterList p_output) {
        this.p_output = p_output;
    }
    public Client getCliente() {
        return cliente;
    }
    public void setCliente(Client cliente) {
        this.cliente = cliente;
    }       
}

Luego realizo mi operación:

import com.sap.mw.jco.JCO;

public class TestDAO {
Conexion cnx= new Conexion();
   
    public void obtenerRFC(String serie) {
        try {           
            //Creo el Repositorio
            cnx.setRepositorio(JCO.createRepository("RepositorioSAP", cnx.getCliente()));
            //creo el templete            cnx.setFtemplate(cnx.getRepositorio().getFunctionTemplate("ZMVIP_MB52".toUpperCase()));
           
            cnx.setFuncion(cnx.getFtemplate().getFunction());
          
            //Pasamos parametros a la funcion
            cnx.getFuncion().getImportParameterList().setValue("9C-PVSD", "CSI");
            cnx.getFuncion().getImportParameterList().setValue("00124020", "SKU");
            //ejecuto la función
            cnx.getCliente().execute(cnx.getFuncion());
           
            System.out.println(cnx.getFuncion().getExportParameterList().getString("STOCK"));
            System.out.println(cnx.getFuncion().getExportParameterList().getString("COMENTARIO"));
        } catch (Exception e) {
            System.out.println("TestDAO .obtenerRFC() : "+e.getMessage());
        }
    }
}

Espero y les sea de utilidad, cualquier duda comenten, saludos.

jueves, 29 de noviembre de 2012

Trama logarítmica

Hola, hoy les traigo una nueva entrada en la cual les presentare el codigio para generar la trama de escalas logarítmicas haciendo uso de las librerias GeotollKit en la versión 3.1, esta nos ofrece una libreria denominada WellLog.NET , la cuel es utilizada para realizar representaciones de datos petrofisicos.

Me tope con un requerimiento en el cual se me solicitaban la creación de una grafica que mostrara los registros geofisicos y por lo tanto generara una trama o "grilla" de dichas representación utilizando la libreria que le mencionaba anteriormente. Alli les dejo el codigo por si a alguien le hace falta, ya que en google no hay la documentación acerca de esta libreria por ser estadounidence y de paga. el codigo esta en C#.


           cgLogValueGridVisual logarithmicValueGrid = new cgLogValueGridVisual();
            logarithmicValueGrid.LogScale = 1;
            logarithmicValueGrid.DecadeCount = 4;

            cgLogValueGridLevel levelMedium = new cgLogValueGridLevel(0);
            cgGraphicAttribute attrMedium = new cgGraphicAttribute();
            attrMedium.SetLineWidth(1);
            attrMedium.SetLineColor(Color.Green);
            levelMedium.Attribute = attrMedium;
            logarithmicValueGrid.Add(levelMedium);        
          
            stacked.ValueGridVisual = logarithmicValueGrid;
            stacked.DepthGridVisual.Clear();

            cgAdaptiveDepthGridLevel adaptiveDepthGridLevel = new cgAdaptiveDepthGridLevel();
            adaptiveDepthGridLevel.MinorIsVisible = true;
            adaptiveDepthGridLevel.MediumIsVisible = false;
            adaptiveDepthGridLevel.MajorIsVisible = true;
            stacked.DepthGridVisual.Add(adaptiveDepthGridLevel);

           
            cgInnerTrack pista = new cgInnerTrack();
            pista.ValueGridVisual.SetVisible(false);
            stacked.Tracks.Add(pista);




Saludos, si les puedo ayudar en algo comenten.

domingo, 23 de septiembre de 2012

Algoritmo de round-robin(Sistema todos vs todos)

Hoy traigo el algoritmo de round-robin, o mejor conocido como el de todos contra todos.
El sistema de todos contra todos o sistema de liga es un sistema de competición, generalmente deportiva, en que todos los participantes del torneo se enfrentan entre ellos en un número constante encuentros. Este tipo de competición es también llamado liguilla o round-robin.

Para determinar el calendario del torneo, se realiza un simple algoritmo de selección. A cada uno de los competidores se le asigna un número y se van rotando los números, dejando uno fijo. Por ejemplo, en un torneo con 10 equipos:

1ª ronda: (A contra J, B contra I, … )
 A B C D E 
 J I H G F

2ª ronda: (A contra I, J contra H, … )
 A J B C D  
 I H G F E

/**
*
* @author ISC-Luis
*/
public class RoundRobin {

    public static void main(String[] args) {
        RoundRobin rr = new RoundRobin();
        for (int i = 0; i < 9; i++) {
            rr.mostrar();
            rr.combinar();
        }  
    }

    private String[] equipos= new String[10];

    public RoundRobin() {
        this.equipos[0]="A";
        this.equipos[1]="B";
        this.equipos[2]="C";
        this.equipos[3]="D";
        this.equipos[4]="E";
        this.equipos[5]="F";
        this.equipos[6]="G";
        this.equipos[7]="H";
        this.equipos[8]="I";
        this.equipos[9]="J";
    }

    public void combinar(){            
        String buffer=equipos[equipos.length-1];
  
        for (int i = equipos.length-1; i > 1; i--) {
            equipos[i]=equipos[i-1];
        }
        equipos[1]=buffer;  
    }

    public void mostrar(){
        for (int i = 0, j=equipos.length-1; i<j; i++, j--) {
            System.out.println(equipos[i]+" vs "+ equipos[j]);
        }
        System.out.println("*************************************");
    }


Allí esta el código del ejemplo del algoritmo de round-robin ya implementado con 10 equipos, en java.!!
Si hay alguna duda o comentario estoy para servirles en lo que se les ofrezca..!

viernes, 24 de agosto de 2012

Pagina Principal

Este blog lo cree con el fin de ayudar a jóvenes con dudas respecto a programación en java, php, SQL, CSS, C#, HTML, JSF, JSP, JPA, Hibernate, iBatis, BIRT Reports...
Si tienen algún tema en especial aquí lo podemos resolver, ami me gusta mucho java, así que si es en java seria genial..!!

Mis frases favoritas son:

  • "Amigo de la soledad y enemigo de la multitud". 
  • “Somos lo que hacemos de forma repetitiva. La excelencia, entonces, no es un acto, sino un hábito.” 
  • Enfrentarse, siempre enfrentarse, es el modo de resolver el problema. ¡Enfrentarse a él! 
  • Nunca consideres el estudio como una obligación, sino como una oportunidad para penetrar en el bello y maravilloso mundo del saber. 

jueves, 23 de agosto de 2012

Socket en Java..!!

 Socket en Java..!!
Hola, este es mi primer post y hare mi hola mundo en el blog, les traigo en java el socket TCP, primero les dare una breve teoría y luego el código para que sepan lo que se esta haciendo..!!

 Los sockets formas de comunicación entre programas a través de una red TCP/IP. De hecho, al establecer una conexión via Internet estamos utilizando sockets: los sockets realizan la interfaces entre la aplicación ya el protocolo TCP/IP, estos trabajan en la capa de Transporte del modelo OSI.


Los sockes pueden tener lugar dentro de la misma máquina o a través de una red. Se usan en forma cliente-servidor: es decir cuando un cliente y un servidor establecen una conexión, estos lo hacen a través de un socket. Afortunadamente Java(amo a java por cierto) proporciona para esto las clases ServerSocket y Socket, que se encuentran en las clases java.net.*;.

Servidor.java..!!

import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author ISC-Luis
 */
public class Servidor {
    public static void main(String argv[]) {
        ServerSocket servidor;
        Socket cliente;
        String nomCliente="Luis Enrique";
        try {
            servidor = new ServerSocket(7777);
            do {
                cliente = servidor.accept();
                System.out.println("Hola soy el cliente: "+nomCliente);
                PrintStream ps = new PrintStream(cliente.getOutputStream());
                ps.println("Welcome cliente "+nomCliente);
                cliente.close();
            } while (true);
        }catch (Exception e) {
            e.getMessage();
        }
    }
}

Cliente.java

import java.io.DataInputStream;
import java.net.InetAddress;
import java.net.Socket;

/**
 * @author ISC-Luis
 */
public class Cliente {

    public static void main(String argv[]) {
   
        InetAddress direccion;
        Socket servidor;
       
        try {
            direccion = InetAddress.getLocalHost();
            servidor = new Socket(direccion, 7777);
            DataInputStream datos =new DataInputStream(servidor.getInputStream());
           
            System.out.println(datos.readLine());
           
            servidor.close();
        }catch (Exception e) {
            e.getMessage();
        }
    }
}

Si les surgen dudas o algún problema que tengan pueden comentar para solucionarlos y publicarlos en el blog, ya sea java, php, sql, c#, linux, estoy para servirles..!!