Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import org.json.simple.JSONObject;
- import org.json.simple.JSONArray;
- import org.json.simple.parser.JSONParser;
- import org.json.simple.parser.ParseException;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.*;
- import java.text.SimpleDateFormat;
- public class Main {
- static class MyJSONComparator implements Comparator<JSONObject> {
- @Override
- public int compare(JSONObject o1, JSONObject o2) {
- Long a = (Long) o1.get("id");
- Long b = (Long) o2.get("id");
- return a.compareTo(b);
- }
- }
- public static void main(String[] args) {
- BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
- try {
- String in = bufferedReader.readLine();
- JSONParser parser = new JSONParser();
- JSONArray goods = (JSONArray) parser.parse(in);
- int price_less = 0, price_greater = 0;
- String name_contains = "";
- Date date_before = null, date_after = null;
- String pattern = "dd.MM.yyyy";
- SimpleDateFormat simple_date_format = new SimpleDateFormat(pattern);
- for (int i = 0; i < 5; i++) {
- in = bufferedReader.readLine();
- String[] parsed = in.split(" ");
- if (Objects.equals(parsed[0], "NAME_CONTAINS")) {
- name_contains = parsed[1].toLowerCase();
- } else if (Objects.equals(parsed[0], "PRICE_GREATER_THAN")) {
- price_greater = Integer.parseInt(parsed[1]);
- } else if (Objects.equals(parsed[0], "PRICE_LESS_THAN")) {
- price_less = Integer.parseInt(parsed[1]);
- } else if (Objects.equals(parsed[0], "DATE_BEFORE")) {
- date_before = simple_date_format.parse(parsed[1]);
- } else if (Objects.equals(parsed[0], "DATE_AFTER")) {
- date_after = simple_date_format.parse(parsed[1]);
- }
- }
- bufferedReader.close();
- ArrayList<JSONObject> list = new ArrayList<>();
- for (Object good : goods) {
- JSONObject cur_good = (JSONObject) good;
- String name = ((String) cur_good.get("name")).toLowerCase();
- Date date = simple_date_format.parse((String) cur_good.get("date"));
- Long price = (Long) cur_good.get("price");
- if (name.contains(name_contains)
- && (date.after(date_after) || date.equals(date_after))
- && (date.before(date_before) || date.equals(date_before))
- && price >= price_greater
- && price <= price_less) {
- list.add(cur_good);
- }
- }
- list.sort(new MyJSONComparator());
- JSONArray result = new JSONArray();
- for (JSONObject good : list) {
- result.add(good);
- }
- System.out.println(result.toString());
- } catch (IOException | ParseException | java.text.ParseException e) {
- e.printStackTrace();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment