Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.company;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.TreeSet;
- public class Main {
- private static Map<String, TreeSet<Order>> order = new HashMap<>();
- private static TreeSet<Order> orderByName = new TreeSet<>();
- static class Order implements Comparable<Order> {
- String name;
- String consumer;
- double price;
- Order(String name, double price, String consumer) {
- this.name = name;
- this.consumer = consumer;
- this.price = price;
- }
- String getName() {
- return name;
- }
- double getPrice() {
- return price;
- }
- String getConsumer() {
- return consumer;
- }
- @Override
- public int compareTo(Order order) {
- if (name.equals(order.name) && consumer.equals(order.consumer)) {
- if (price >= order.price) {
- return 1;
- } else {
- return -1;
- }
- } else if (name.equals(order.name)) {
- return consumer.compareTo(order.consumer);
- }
- return this.name.compareTo(order.name);
- }
- @Override
- public String toString() {
- return String.format("{%s;%s;%.2f}", getName(), getConsumer(), getPrice());
- }
- }
- public static void main(String[] args) throws IOException {
- BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
- int value = Integer.parseInt(reader.readLine());
- for (int i = 0; i < value; i++) {
- String input = reader.readLine();
- if (input.contains(";")) {
- String[] inputDataStream = input.split(" ");
- String userCommands = inputDataStream[0];
- switch (userCommands) {
- case "AddOrder":
- String firstLine = input.substring(9);
- String[] secondLIne = firstLine.split(";");
- String name = secondLIne[0];
- double price = Double.parseDouble(secondLIne[1]);
- String consumer = secondLIne[2];
- Order newOrder = new Order(name, price, consumer);
- if (!order.containsKey(consumer)) {
- order.put(consumer, new TreeSet<>());
- }
- order.get(consumer).add(newOrder);
- orderByName.add(newOrder);
- System.out.println("Order added");
- break;
- case "FindOrdersByPriceRange":
- String substringedValue = input.substring(23);
- String[] prices = substringedValue.split(";");
- double firstPrice = Double.parseDouble(prices[0]);
- double secondPrice = Double.parseDouble(prices[1]);
- int index = 0;
- if (orderByName.isEmpty()) {
- System.out.println("No orders found");
- break;
- }
- for (Order order : orderByName) {
- if (order.getPrice() >= firstPrice && order.getPrice() <= secondPrice) {
- System.out.println(order.toString());
- index++;
- }
- }
- if (index == 0) {
- System.out.println("No orders found");
- break;
- }
- }
- } else {
- String[] line = input.split(" ");
- String command = line[0];
- switch (command) {
- case "DeleteOrders":
- String orderToDelete = input.substring(13);
- if (order.containsKey(orderToDelete)) {
- int orderSize = order.get(orderToDelete).size();
- Iterator<Order> orderIterator = orderByName.iterator();
- while (orderIterator.hasNext()) {
- Order order = orderIterator.next();
- if (order.getConsumer().equals(orderToDelete)) {
- orderIterator.remove();
- }
- }
- order.remove(orderToDelete);
- System.out.println(String.format("%d orders deleted", orderSize));
- break;
- } else {
- System.out.println("No orders found");
- break;
- }
- case "FindOrdersByConsumer":
- String substringedNameToFind = input.substring(21);
- if (!order.containsKey(substringedNameToFind)) {
- System.out.println("No orders found");
- break;
- } else {
- TreeSet<Order> consumerOrders = order.get(substringedNameToFind);
- for (Order order : consumerOrders) {
- System.out.println(order.toString());
- }
- break;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement