Ругается на одинарные кавычки, но они есть.
Рекомендация ментора:
Убедись, что значения, которые идут после знака равенства, обрамлены одинарными кавычками.
У меня вывод в консоль (для примера):
name = 'Ivanov' and country = 'Ukraine' and city = 'Kiev' and age = '11'
Может кто сталкивался, как кавычки пихать, что бы пропустило.
package com.javarush.task.task22.task2208;
import java.util.*;
/*
Формируем WHERE
*/
public class Solution {
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("name=Ivanov", "country=Ukraine, city=Kiev, age=null");
System.out.println(getQuery(map));
}
public static String getQuery(Map<String, String> params) {
List<String> list = new ArrayList<>();
StringBuilder result = new StringBuilder();
String key = "";
String value = "";
for (Map.Entry<String, String> entry : params.entrySet()) {
key = entry.getKey();
value = entry.getValue();
}
list = Arrays.asList(value.split(", "));
// list.removeIf(s -> s.equals("null"));
if (!key.contains("null")) {
String[] tpm = key.split("=");
result.append(tpm[0]).append(" = '").append(tpm[1]).append("'");
}
for (String text : list) {
String[] tpm = text.split("=");
if (!text.contains("null")) {
switch (tpm[0]) {
case "country":
result.append(" and country = '").append(tpm[1]).append("'");
break;
case "city":
result.append(" and city = '").append(tpm[1]).append("'");
break;
case "age":
result.append(" and age = '").append(tpm[1]).append("'");
break;
}
}
}
return result.toString();
}
}