Advertisement
Guest User

Untitled

a guest
May 21st, 2019
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.26 KB | None | 0 0
  1. package com.company;
  2.  
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.util.HashMap;
  7. import java.util.Iterator;
  8. import java.util.Map;
  9. import java.util.TreeSet;
  10. public class Main {
  11.  
  12.  
  13.  
  14. private static Map<String, TreeSet<Order>> order = new HashMap<>();
  15.  
  16. private static TreeSet<Order> orderByName = new TreeSet<>();
  17.  
  18.  
  19. static class Order implements Comparable<Order> {
  20.  
  21. String name;
  22. String consumer;
  23. double price;
  24.  
  25. Order(String name, double price, String consumer) {
  26. this.name = name;
  27. this.consumer = consumer;
  28. this.price = price;
  29. }
  30.  
  31. String getName() {
  32. return name;
  33. }
  34.  
  35. double getPrice() {
  36. return price;
  37. }
  38.  
  39. String getConsumer() {
  40. return consumer;
  41. }
  42.  
  43. @Override
  44. public int compareTo(Order order) {
  45.  
  46. if (name.equals(order.name) && consumer.equals(order.consumer)) {
  47.  
  48. if (price >= order.price) {
  49.  
  50. return 1;
  51.  
  52. } else {
  53.  
  54. return -1;
  55.  
  56. }
  57.  
  58. } else if (name.equals(order.name)) {
  59.  
  60. return consumer.compareTo(order.consumer);
  61.  
  62. }
  63.  
  64. return this.name.compareTo(order.name);
  65.  
  66. }
  67.  
  68. @Override
  69. public String toString() {
  70. return String.format("{%s;%s;%.2f}", getName(), getConsumer(), getPrice());
  71. }
  72. }
  73.  
  74.  
  75.  
  76.  
  77. public static void main(String[] args) throws IOException {
  78.  
  79.  
  80. BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
  81.  
  82. int value = Integer.parseInt(reader.readLine());
  83.  
  84. for (int i = 0; i < value; i++) {
  85.  
  86.  
  87. String input = reader.readLine();
  88.  
  89. if (input.contains(";")) {
  90.  
  91. String[] inputDataStream = input.split(" ");
  92.  
  93.  
  94. String userCommands = inputDataStream[0];
  95.  
  96.  
  97. switch (userCommands) {
  98. case "AddOrder":
  99. String firstLine = input.substring(9);
  100. String[] secondLIne = firstLine.split(";");
  101. String name = secondLIne[0];
  102. double price = Double.parseDouble(secondLIne[1]);
  103. String consumer = secondLIne[2];
  104. Order newOrder = new Order(name, price, consumer);
  105. if (!order.containsKey(consumer)) {
  106. order.put(consumer, new TreeSet<>());
  107. }
  108. order.get(consumer).add(newOrder);
  109. orderByName.add(newOrder);
  110. System.out.println("Order added");
  111. break;
  112.  
  113. case "FindOrdersByPriceRange":
  114. String substringedValue = input.substring(23);
  115. String[] prices = substringedValue.split(";");
  116. double firstPrice = Double.parseDouble(prices[0]);
  117. double secondPrice = Double.parseDouble(prices[1]);
  118. int index = 0;
  119. if (orderByName.isEmpty()) {
  120. System.out.println("No orders found");
  121. break;
  122. }
  123. for (Order order : orderByName) {
  124. if (order.getPrice() >= firstPrice && order.getPrice() <= secondPrice) {
  125. System.out.println(order.toString());
  126. index++;
  127. }
  128. }
  129. if (index == 0) {
  130. System.out.println("No orders found");
  131. break;
  132. }
  133. }
  134. } else {
  135.  
  136.  
  137. String[] line = input.split(" ");
  138.  
  139.  
  140. String command = line[0];
  141.  
  142.  
  143. switch (command) {
  144. case "DeleteOrders":
  145. String orderToDelete = input.substring(13);
  146. if (order.containsKey(orderToDelete)) {
  147. int orderSize = order.get(orderToDelete).size();
  148. Iterator<Order> orderIterator = orderByName.iterator();
  149. while (orderIterator.hasNext()) {
  150. Order order = orderIterator.next();
  151. if (order.getConsumer().equals(orderToDelete)) {
  152. orderIterator.remove();
  153. }
  154. }
  155. order.remove(orderToDelete);
  156. System.out.println(String.format("%d orders deleted", orderSize));
  157. break;
  158. } else {
  159. System.out.println("No orders found");
  160. break;
  161. }
  162. case "FindOrdersByConsumer":
  163. String substringedNameToFind = input.substring(21);
  164. if (!order.containsKey(substringedNameToFind)) {
  165. System.out.println("No orders found");
  166. break;
  167. } else {
  168. TreeSet<Order> consumerOrders = order.get(substringedNameToFind);
  169. for (Order order : consumerOrders) {
  170. System.out.println(order.toString());
  171. }
  172. break;
  173. }
  174. }
  175. }
  176. }
  177. }
  178. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement