P. 1
curso java varios

curso java varios

|Views: 2,481|Likes:

More info:

Published by: WilliamRenánSimbrónPrado on Mar 24, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

06/19/2013

pdf

text

original

A continuación se detallan las clases creadas en la plataforma Java y que son

utilizadas para ejecutar los comandos solicitados desde el administrador físico y

enviarle la respuesta.

El procesamiento de los comandos, se realiza por medio de la clase

sv.edu.ufg.maestria.wds.negocio.Cliente; como podrá observarse la estructuración

de esta aplicación se ha desarrollado haciendo uso del modelo de programación en

capas, en la siguiente figura se muestra el diagrama UML de esta aplicación.

En la capa de dominio se han colocado las clases que son persistidas en la base de

datos a través del motor de persistencia hibernate, y que son los objetos que las

clases en los paquetes de datos y negocio mueven a través de la aplicación.

Maestría en Informática Aplicada en Redes

Página 58 de 82

A continuación se muestra el código fuente de la clase
sv.edu.ufg.maestria.wds.dominio.InboxCommand

package sv.edu.ufg.maestria.wds.dominio;

import sv.edu.ufg.maestria.wds.datos.*;

public class InboxCommand {

private int id;
private String scriptName;
private String status;
private int idInbox;
private int maxSecondsTime;
private String senderNumber;

Maestría en Informática Aplicada en Redes

Página 59 de 82

private String sMSCNumber;
private String scriptLocation;

public static InboxCommand obtener(String id){
DAOInboxCommand dic = new DAOInboxCommand();
InboxCommand ic = dic.obtener(id);
if (ic == null)

return null;

else

return ic;

}

public int getId() {
return id;

}

public void setId(int id) {
this.id = id;

}
public int getIdInbox() {
return idInbox;

}

public void setIdInbox(int idInbox) {
this.idInbox = idInbox;

}
public int getMaxSecondsTime() {
return maxSecondsTime;

}

public void setMaxSecondsTime(int maxSecondsTime) {
this.maxSecondsTime = maxSecondsTime;

}

public String getScriptLocation() {
return scriptLocation;

}

public void setScriptLocation(String scriptLocation) {
this.scriptLocation = scriptLocation;

}

public String getScriptName() {
return scriptName;

}

public void setScriptName(String scriptName) {
this.scriptName = scriptName;

}

public String getSenderNumber() {
return senderNumber;

}

public void setSenderNumber(String senderNumber) {
this.senderNumber = senderNumber;

}

public String getsMSCNumber() {
return sMSCNumber;

}

public void setsMSCNumber(String number) {
sMSCNumber = number;

}

public String getStatus() {
return status;

}

Maestría en Informática Aplicada en Redes

Página 60 de 82

public void setStatus(String status) {
this.status = status;

}

}

El código fuente de la clase sv.edu.ufg.maestria.wds.dominio.Outbox es
mostrado a continuación:

package sv.edu.ufg.maestria.wds.dominio;

import sv.edu.ufg.maestria.wds.datos.*;

import java.sql.Timestamp;

public class Outbox {

private int id;
private Timestamp updatedInDb;
private Timestamp inserlnDB;
private Timestamp sendingDateTime;
private String text;
private String destinationNumber;
private String coding;
private String udh;
private int CLASS;
private String textDecoded;
private boolean multipart;
private int relativeValidity;
private String senderId;
private Timestamp sendingTimeOut;
private String deliveryReport;
private String creatorId;

public String guardarNuevo(Outbox o){
DAOOutbox daoOutbox = new DAOOutbox();
return daoOutbox.guardarNuevo(o);

}

private String convertirCadenaAHexa(String st){
String strHex = new String("");
for(int i = 0; i

strHex += Integer.toHexString( (int)st.charAt( i ) );

return strHex;

}

public void llenarValores(InboxCommand ic, String resultadoDelComando){

java.util.Date date1 = new java.util.Date ( ) ;
long time1 = date1.parse ( date1.toString() ) ;

this.setText(this.convertirCadenaAHexa(resultadoDelComando));
this.setTextDecoded(resultadoDelComando);
this.setDestinationNumber(ic.getSenderNumber());
this.setCoding("8bit");
this.setCreatorId(" ");
this.setRelativeValidity(-1);
this.setCLASS(-1);
this.setMultipart(false);
this.setDeliveryReport("default");
this.setSendingTimeOut(new java.sql.Timestamp(time1));

}

public String getCoding() {
return coding;

}

public void setCoding(String coding) {
this.coding = coding;

}

Maestría en Informática Aplicada en Redes

Página 61 de 82

public String getCreatorId() {
return creatorId;

}

public void setCreatorId(String creatorId) {
this.creatorId = creatorId;

}

public String getDeliveryReport() {
return deliveryReport;

}

public void setDeliveryReport(String deliveryReport) {
this.deliveryReport = deliveryReport;

}

public String getDestinationNumber() {
return destinationNumber;

}

public void setDestinationNumber(String destinationNumber) {
this.destinationNumber = destinationNumber;

}

public int getId() {
return id;

}

public void setId(int id) {
this.id = id;

}

public Timestamp getInserlnDB() {
return inserlnDB;

}

public void setInserlnDB(Timestamp inserlnDB) {
this.inserlnDB = inserlnDB;

}

public boolean isMultipart() {
return multipart;

}

public void setMultipart(boolean multipart) {
this.multipart = multipart;

}

public int getRelativeValidity() {
return relativeValidity;

}

public void setRelativeValidity(int relativeValidity) {
this.relativeValidity = relativeValidity;

}

public String getSenderId() {
return senderId;

}

public void setSenderId(String senderId) {
this.senderId = senderId;

}

public Timestamp getSendingDateTime() {
return sendingDateTime;

}

public void setSendingDateTime(Timestamp sendingDateTime) {
this.sendingDateTime = sendingDateTime;

}

Maestría en Informática Aplicada en Redes

Página 62 de 82

public Timestamp getSendingTimeOut() {
return sendingTimeOut;

}

public void setSendingTimeOut(Timestamp sendingTimeOut) {
this.sendingTimeOut = sendingTimeOut;

}

public String getText() {
return text;

}

public void setText(String text) {
this.text = text;

}

public String getTextDecoded() {
return textDecoded;

}

public void setTextDecoded(String textDecoded) {
this.textDecoded = textDecoded;

}

public String getUdh() {
return udh;

}

public void setUdh(String udh) {
this.udh = udh;

}

public Timestamp getUpdatedInDb() {
return updatedInDb;

}

public void setUpdatedInDb(Timestamp updatedInDb) {
this.updatedInDb = updatedInDb;

}

public int getCLASS() {
return CLASS;

}

public void setCLASS(int class1) {
CLASS = class1;

}

}

En la capa de datos se desarrollan las clases encargadas de persistir en la
base de datos objetos de la capa de dominio a través del motor de
persistencia de hibernate, en esta se implementan funcionalidades como
leer y actualizar objetos.

El código fuente de las clases
sv.edu.ufg.maestria.wds.DAOInboxCommand y DAOOutbox es mostrado a
continuación:

package sv.edu.ufg.maestria.wds.datos;

import sv.edu.ufg.maestria.wds.dominio.*;

Maestría en Informática Aplicada en Redes

Página 63 de 82

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import java.util.List;

public class DAOInboxCommand {
public InboxCommand obtener(String id){
try
{

SessionFactory sessionFactory = new
Configuration().configure().buildSessionFactory();

Session sesion = sessionFactory.openSession();
List inboxCommand = sesion.createQuery("from InboxCommand as inboxCommand
where inboxCommand.status='NoLeido' and inboxCommand.idInbox=" + id).list();
sesion.close();
if (inboxCommand.isEmpty()){
return null;

}else{

InboxCommand ic = (InboxCommand)inboxCommand.get(0);
ic.setStatus("Leido");
this.actualizar(ic);
return ic;

}
}catch (Exception ex)
{

return null;

}

}

public void actualizar(InboxCommand ic){

SessionFactory sessionFactory = new
Configuration().configure().buildSessionFactory();

Session sesion = sessionFactory.openSession();
sesion.update(ic);
sesion.flush();
sesion.close();

}

}

package sv.edu.ufg.maestria.wds.datos;

import sv.edu.ufg.maestria.wds.dominio.*;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class DAOOutbox {
public String guardarNuevo(Outbox o){
try{

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();
Session sesion = sessionFactory.openSession();
sesion.save(o);
sesion.flush();
sesion.close();

}
catch(Exception e){

return e.getCause().getLocalizedMessage() ;
}

}

return null;

}

Maestría en Informática Aplicada en Redes

Página 64 de 82

En la capa de negocio se han colocado las clases encargadas de definir la
lógica de ejecución del aplicativo, esta interactúa con el administrador real
a través del daemon i2ic al momento de ingresar nuevas solicitudes de
comandos, el código fuente de las clases de esta capa se presenta a
continuación:

package sv.edu.ufg.wds.negocio;

import java.io.*;
import sv.edu.ufg.wds.dominio.*;
public class Administrador {
public String ejecutarComando(String comando){
try
{

if(comando == null){
comando = "/scripts/Error";
}
Process p = Runtime.getRuntime().exec (comando);
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader (new InputStreamReader (is));

return br.readLine();

}
catch (Exception e)
{

return e.getMessage();

}

}

public String enviarResultado(Outbox o){
Outbox outbox = new Outbox();
return outbox.guardarNuevo(o);

}

public InboxCommand leerComando(String id) {
InboxCommand ic = InboxCommand.obtener(id);
return ic;

}

}

package sv.edu.ufg.maestria.wds.negocio;

import sv.edu.ufg.maestria.wds.dominio.*;

public class Cliente {
public static void main(String[] args) {

if ( args[0].length() > 0){
Administrador a = new Administrador();
InboxCommand ic = a.leerComando(args[0]);
Outbox o = new Outbox();

String

resultadoDelComando

=

a.ejecutarComando(ic.getScriptLocation()+"/"+ic.getScriptName());
o.llenarValores(ic, resultadoDelComando);
System.out.print( a.enviarResultado(o));

}else{

System.out.print("ERR: NO ARGS");

}

}

}

Maestría en Informática Aplicada en Redes

Página 65 de 82

Hibernate necesita un archivo de configuración general llamado
hibernate.cfg.xml y un archivo de correspondencia por cada clase que
deba ser persistida en la base de datos, en este caso los archivos de
correspondencia InboxCommand.hbm y Outbox.hbm.xml corresponden a
las clases InboxCommand y Outbox respectivamente. El contenido de
estos archivos es mostrado a continuación.

Archivo hibernate.cfg.xml


"-//Hibernate/Hibernate Configuration DTD//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">


com.mysql.jdbc.Driver
jdbc:mysql://localhost/smsd


10
true
org.hibernate.dialect.MySQLDialect
update




Archivo InboxCommand.hbm.xml


"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">


















Maestría en Informática Aplicada en Redes

Página 66 de 82









Archivo Outbox.hbm.xml


"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



















































Maestría en Informática Aplicada en Redes

Página 67 de 82

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->