Restaurant-Server:世界各地的调查人员,企业家和企业家必须在全球范围内从危机中受益。 Desde aplicac

  • Z0_225213
    了解作者
  • 63.9KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-05-27 08:06
    上传日期
Restaurant-Server:世界各地的调查人员,企业家和企业家必须在全球范围内从危机中受益。 Desde aplicaciones para recopilar datos de laexpansióndel virus,hasta ventiladores impresos en 3D para los hospitales,estos son algunos de los numerosos proyectostecnológicosque han surgido para Fightir el coronavirus。 普罗旺斯地区的普罗旺斯地区和波多黎各的普罗旺斯州洛斯市使用权的通行证。 Estoayudará一个个性化的联络人
Restaurant-Server-master.zip
内容介绍
package co.unicauca.restaurant.server.infra; import co.unicauca.restaurant.common.domain.Customer; import co.unicauca.restaurant.common.domain.Dish; import co.unicauca.restaurant.common.domain.Restaurant; import co.unicauca.restaurant.common.infra.JsonError; import co.unicauca.restaurant.common.infra.Protocol; import co.unicauca.restaurant.common.infra.Utilities; import co.unicauca.restaurant.server.access.Factory; import co.unicauca.restaurant.server.access.ICustomerRepository; import co.unicauca.restaurant.server.access.IDishRepository; import java.io.IOException; import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; import co.unicauca.restaurant.server.access.IRestaurantRepository; import co.unicauca.restaurant.server.domain.services.CustomerService; import co.unicauca.restaurant.server.domain.services.DishService; import co.unicauca.restaurant.server.domain.services.RestaurantService; import com.google.gson.Gson; import java.util.ArrayList; import java.util.List; /** * Servidor Socket que está escuchando permanentemente solicitudes de los * clientes. Cada solicitud la atiende en un hilo de ejecución * * @author Libardo, Julio */ public class RestaurantServerSocket implements Runnable { /** * Servicio de platos */ private final DishService dishService; /** * Servicio de restaurantes */ private final RestaurantService restaurantService; /** * Servicio de clientes */ private final CustomerService customerService; /** * Server Socket, la orejita */ private static ServerSocket ssock; /** * Socket por donde se hace la petición/respuesta */ private static Socket socket; /** * Permite leer un flujo de datos del socket */ private Scanner input; /** * Permite escribir un flujo de datos del scoket */ private PrintStream output; /** * Puerto por donde escucha el server socket */ private static final int PORT = Integer.parseInt(Utilities.loadProperty("server.port")); /** * Constructor */ public RestaurantServerSocket() { // Se hace la inyección de dependencia IRestaurantRepository repositoryR = Factory.getInstance().getRestaurantRepository(); restaurantService = new RestaurantService(repositoryR); ICustomerRepository repositoryC = Factory.getInstance().getCustomerRepository(); customerService = new CustomerService(repositoryC); IDishRepository repositoryD = Factory.getInstance().getDishRepository(); dishService = new DishService(repositoryD); } /** * Arranca el servidor y hace la estructura completa */ public void start() { openPort(); while (true) { waitToClient(); throwThread(); } } /** * Lanza el hilo */ private static void throwThread() { new Thread(new RestaurantServerSocket()).start(); } /** * Instancia el server socket y abre el puerto respectivo */ private static void openPort() { try { ssock = new ServerSocket(PORT); Logger.getLogger("Server").log(Level.INFO, "Servidor iniciado, escuchando por el puerto {0}", PORT); } catch (IOException ex) { Logger.getLogger(RestaurantServerSocket.class.getName()).log(Level.SEVERE, "Error del server socket al abrir el puerto", ex); } } /** * Espera que el cliente se conecta y le devuelve un socket */ private static void waitToClient() { try { socket = ssock.accept(); Logger.getLogger("Socket").log(Level.INFO, "Socket conectado"); } catch (IOException ex) { Logger.getLogger(RestaurantServerSocket.class.getName()).log(Level.SEVERE, "Eror al abrir un socket", ex); } } /** * Cuerpo del hilo */ @Override public void run() { try { createStreams(); readStream(); closeStream(); } catch (IOException ex) { Logger.getLogger(RestaurantServerSocket.class.getName()).log(Level.SEVERE, "Eror al leer el flujo", ex); } catch (Exception ex) { Logger.getLogger(RestaurantServerSocket.class.getName()).log(Level.SEVERE, null, ex); } } /** * Crea los flujos con el socket * * @throws IOException */ private void createStreams() throws IOException { output = new PrintStream(socket.getOutputStream()); input = new Scanner(socket.getInputStream()); } /** * Lee el flujo del socket */ private void readStream() throws Exception { if (input.hasNextLine()) { // Extrae el flujo que envió la aplicación cliente String request = input.nextLine(); processRequest(request); } else { output.flush(); String errorJson = generateErrorJson(); output.println(errorJson); } } /** * Procesar la solicitud que proviene de la aplicación cliente * * @param requestJson petición que proviene del cliente socket en formato * json que viene de esta manera: * "{"resource":"customer","action":"get","parameters":[{"name":"id","value":"98000001"}]}" * */ private void processRequest(String requestJson) throws Exception { // Convertir la solicitud a objeto Protocol para poderlo procesar Gson gson = new Gson(); Protocol protocolRequest = gson.fromJson(requestJson, Protocol.class); switch (protocolRequest.getResource()) { case "Restaurante": if (protocolRequest.getAction().equals("get")) { // Consultar un customer GetRestaurantProcess(protocolRequest); } if (protocolRequest.getAction().equals("post")) { // Agregar un customer PostRestaurantProcess(protocolRequest); } if (protocolRequest.getAction().equals("gets")) { //(consutlar todos los restaurantes GetRestaurantListProcess(); } break; case "customer": if (protocolRequest.getAction().equals("get")) { // Consultar un customer processGetCustomer(protocolRequest); } if (protocolRequest.getAction().equals("post")) { // Agregar un customer processPostCustomer(protocolRequest); } break; case "Dish": if (protocolRequest.getAction().equals("post")) { DishPostProcess(protocolRequest); } } } /** * Procesa la solicitud de agregar un plato. */ private void DishPostProcess(Protocol protocolRequest) { Dish objDish = new Dish(); objDish.setPlatoId(protocolRequest.getParameters().get(0).getValue()); objDish.setPlanNom(protocolRequest.getParameters().get(1).getValue()); objDish.setPlacDesc(protocolRequest.getParameters().get(2).getValue()); objDish.setPlaPrecio(Double.parseDouble(protocolRequest.getParameters().get(3).getValue())); String response = dishService.CreateDish(objDish); output.println(response); } private void GetRestaurantProcess(Protocol protocolRequest) throws Exception { // Extraer la cedula del primer parámetro String id = protocolRequest.getParameters().get(0).getValue(); Restaurant obj = restaurantService.findRestaurant((id)); if (obj == null) { String errorJson = generateNotFoundErrorJson(); output.println(errorJson);
评论
    相关推荐
    • iPIC3D
      iPIC3D 大规模并行执行隐式粒子模拟方法在等离子体模拟中的应用 编译 创建一个构建目录(例如,构建)并调用CMake。 完成后,应在构建文件夹中生成可执行的iPIC3D *和库libiPIC3Dlib.a。 mkdir build cd build ...
    • cub3d
      cub3d
    • cub3d
      cub3d
    • 3D重建
      3D重建 在这个项目中,为了进行3D重建和对象化,我遵循了3个步骤: 1-对极整流:为了减少计算成本。 2点匹配3-3D点三角测量 点检测和匹配,三角测量部分将很快添加。
    • Milkshape3D
      Milkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zipMilkshape3D.zip
    • spindle3d
      一个斐济插件,用于自动测量有丝分裂纺锤体体积图像的3D形态学参数。 安装 安装 启动斐济并: 主轴3D 3D ImageJ套件 重新启动斐济
    • cub3d
      cub3d
    • PerspectiveMatrix3D
      开发Stage3D时所用到的两个adobe工具包中的两个类PerspectiveMatrix3D 和 AGALMiniAssembler。
    • 3d
      3D
    • viztool3d
      Viztool 3D 3D可视化以解释3D图形和数学