import java.util.Scanner;
import java.io.*;
import java.util.*;

public class RobotVacuumMainFile
{
    public static void main(String[]args) throws IOException {
       
        Queue qRobotVacuum = new Queue();
        
        File input = new File("RobotVacuumData.txt");
        
        try {
            Scanner in = new Scanner(input);
            while (in.hasNextLine()) {
                String s = in.nextLine();
                StringTokenizer st = new StringTokenizer(s, ";");
                
                String brand = st.nextToken();
                String model = st.nextToken();
                int sN = Integer.parseInt(st.nextToken());
                double p = Double.parseDouble(st.nextToken());
                 
                qRobotVacuum.enqueue(new RobotVacuum (brand,model, sN, p));
            }
        } catch (Exception e) {
            System.out.println(e);
        }
        
        Queue qTemp  =  new Queue();        //create a temporary queue

        // display the list after insert new friends      
        System.out.println("\nList of Robot Vacuum ");
        System.out.println("================");
        while (!qRobotVacuum.isEmpty()){
            RobotVacuum  f  =  (RobotVacuum)qRobotVacuum.dequeue();
            qTemp.enqueue(f);              //store data in qTemp
            System.out.println(f.toString() + "\n");                
        }
    
        //move data in qTemp to original queue
        while(!qTemp.isEmpty()){ 
            qRobotVacuum.enqueue(qTemp.dequeue()); 
        }
        
        // ii-b
        Queue qRobS7  =  new Queue();
        Queue qDreamPlus  =  new Queue();
        
        while (!qRobotVacuum.isEmpty()){
            RobotVacuum rv = (RobotVacuum) qRobotVacuum.dequeue();
            
            if(rv.getModel().equalsIgnoreCase("roborock s7")){
                qRobS7.enqueue(rv);
            }
            else if(rv.getModel().equalsIgnoreCase("dreamtech d10 plus")){
                qDreamPlus.enqueue(rv);
            }
        }
        
        while(!qTemp.isEmpty()){ 
            qRobotVacuum.enqueue(qTemp.dequeue()); 
        }
        
        System.out.println("\nroborock s7 ");
        System.out.println("================");
        while (!qRobS7.isEmpty()){
            RobotVacuum  rv  =  (RobotVacuum)qRobS7.dequeue();
            qTemp.enqueue(rv);              //store data in qTemp
            System.out.println(rv.toString() + "\n");                
        }
        
        while(!qTemp.isEmpty()){ 
            qRobS7.enqueue(qTemp.dequeue()); 
        }
        
        System.out.println("\ndreamtech d10 plus ");
        System.out.println("================");
        while (!qDreamPlus.isEmpty()){
            RobotVacuum  rv  =  (RobotVacuum)qDreamPlus.dequeue();
            qTemp.enqueue(rv);              //store data in qTemp
            System.out.println(rv.toString() + "\n");                
        }
        
        while(!qTemp.isEmpty()){ 
            qDreamPlus.enqueue(qTemp.dequeue()); 
        }
        
        
        // iii
        System.out.println("Serial Num." + "\t" + "Price Before" + "\t" + "price after");
        double discountRate = 0.0;
        double afterPrice = 0.0;
        while (!qDreamPlus.isEmpty()){
            RobotVacuum rv  =  (RobotVacuum)qDreamPlus.dequeue();// INGAT
           
            
            if(rv.getPrice() < 2500){
                discountRate = 0.05;
            }
            else if(rv.getPrice() >= 2500 && rv.getPrice() <= 4500){
                discountRate = 0.07;
            }
            else if(rv.getPrice() > 4500 ){
                discountRate = 0.10;
            }
            
            afterPrice = rv.getPrice()-(rv.getPrice() * discountRate);
            
            
            System.out.println(rv.getSerialNumber() + "\t" + rv.getPrice() + "\t" +afterPrice);
        }
        
        while(!qDreamPlus.isEmpty()){ 
            qDreamPlus.enqueue(qTemp.dequeue()); 
        }
        
        
        
        
        
    }
}