how can i call the list in the resttemplate? - java

1-this my model object for account , iwant to return a json result for post method and my problem that my code return null .=
public class Account implements Serializable {
private static final long serialVersionUID = 1L;
private long id;
private String accountType;
private String title;
private double lockedAmount;
private String lastUpdate;
private double balance;
private String currency;
private String rib;
private String Agency;
private String swiftcode;
private String ribURI;
private boolean canDebit;
private boolean canCredit;
private List<Operation> operation;
private List<Documents> documents;
2-this the class Operation :
public class Operation {
private String Descript;
private String ValueDate;
private String bookDate;
private String Reference;
private Integer Debit;
private Integer Credit;
private Integer ClosingBalance;
}
3-this is what i do in my controller :
//get Operation list by account id
#PostMapping("eAccount/Operations/Account/{id}")
public List<Operation> getOperationsByAccountId(#PathVariable long id, String bookDate) {
return operationService.getOperationsByAccountId(id, bookDate);
}
4-and the service :
//get Operation list by account id
public List<Operation> getOperationsByAccountId(#PathVariable long id, String bookDate) {
Account account = new Account();
account.setId(id);
String url = operationUrl;
account = resttemplate.postForObject(url,account, Account.class);
return account.getOperation();
}
5-i need to return this result :
{ "account": { "id": "100000000137",
"operation": [
{
"bookDate": "20160105 20160201" } ] } }

Related

how to use mapper for list<String> from DTO set to String from DTO

public class MessageRqDTO implements Serializable {
private Long id;
private String data;
private String device;
private String headers;
private Boolean isProcessed;
private String notification;
private String referenceCode;
private Boolean scheduled;
private Boolean transactional;
private Instant startFromTime;
private Instant expirationTime;
private List<String> identifiers = new ArrayList<>();
private UserTokenDTO userToken;
}
first dto List identifiers
public class MessagetoMqDTO implements Serializable{
private Long id;
private String data;
private String device;
private String headers;
private Boolean isProcessed;
private String notification;
private String referenceCode;
private Boolean scheduled;
private Boolean transactional;
private Instant startFromTime;
private Instant expirationTime;
private String identifiers ;
private UserTokenDTO userToken;
private String clientToken;
}
second DTO
use this
#Mapping(target = "messageDTO", source = "messageDTO")
MessagetoMqDTO toDto(MessageRqDTO m,String identifier,String clientToken);
Error:
java: Can't map property "String identifiers" to "List<String> identifiers". Consider to declare/implement a mapping method: "List<String> map(String value)".
Add this method to your mapper interface:
default String mapIdentifiers(List<String> identifiers){
String identifiersSeparator = ",";
return identifiers.stream().collect(Collectors.joining(identifiersSeparator));
}

convert Json of generic type in specific Json format

I'm using Java 8, and I tried by using 'Collectors.groupingBy' but haven't get required format
public class ConsigneeLoadDetails {
private Integer tripID;
private String consignor;
private String consignee;
private String city;
private Double distanceToNext;
private Double load;
private Integer cap;
private Integer vehicleCapacity;
private Double cLoad;
private Integer truckUtilisation;
private Double latitude;
private Double longitude;
// getter , setter of all parameters
}
List<ConsigneeLoadDetails> listConsigneeLoadDetails = new ArrayList();
// loop to add ConsigneeLoadDetails
listConsigneeLoadDetails.add(consigneeLoadDetails);
I'm getting below Json in API response
I want response in below format
Why don't you rearrange your POJO class as something like this
public class ConsigneeLoadDetails {
private Integer tripID;
private String consignor;
private Integer vehicleCapacity;
private Double cLoad;
private Integer truckUtilisation;
private List<consigneeDetails> consigneeDetails
private Double latitude;
private Double longitude;
// getter , setter of all parameters
}
public class ConsigneeDetails {
private String consignee;
private String city;
private Double distanceToNext;
private Double load;
private Integer cap;
// getter , setter of all parameters
}
Map<Integer, List<ConsigneeLoadDetails>> collect =
// group the object by id
listConsigneeLoadDetails.stream().collect(Collectors.groupingBy(consigneeLoadDetails -> consigneeLoadDetails.tripID));
List<ConsigneeLoadDetailsDto> dtoList = new ArrayList<>();
collect.forEach((integer, consigneeLoadDetails) -> {
List<ConsigneeLoadDetails> list = consigneeLoadDetails;
if (Optional.ofNullable(list).isPresent() && !list.isEmpty()) {
ConsigneeLoadDetailsDto dtos = new ConsigneeLoadDetailsDto();
dtos.setTripID(integer);
dtos.setConsignor(list.stream().findFirst().get().getConsignor());
dtos.setVehicleCapacity(list.stream().findFirst().get().getVehicleCapacity());
dtos.setCLoad(list.stream().findFirst().get().getCLoad());
dtos.setTruckUtilisation(list.stream().findFirst().get().getTruckUtilisation());
List<ConsigneeDetails> consigneeDetails = new ArrayList<>();
list.forEach(next -> {
ConsigneeDetails con = new ConsigneeDetails();
con.setCap(next.getCap());
con.setCity(next.getCity());
con.setConsignee(next.getConsignee());
con.setDistanceToNext(next.getDistanceToNext());
con.setLoad(next.getLoad());
consigneeDetails.add(con);
});
dtos.setConsigneeDetails(consigneeDetails);
dtoList.add(dtos);
}
});
// Your result will be store in
// dtoList
}
}
#Getter
#Setter
#ToString
class ConsigneeLoadDetailsDto {
private Integer tripID;
private String consignor;
private Integer vehicleCapacity;
private Double cLoad;
private Integer truckUtilisation;
private List<ConsigneeDetails> consigneeDetails;
}
#Getter
#Setter
#ToString
class ConsigneeDetails {
private String consignee;
private String city;
private Double distanceToNext;
private Double load;
private Integer cap;
}

how to convert JSON string from GSON library to JSON Object?

I know some threads have similar question, but I can't find the solution for me.
I am a beginner in mobile development. I little bit confused how to convert JSON string to normal JSON.
so I have JSON as string like below, this json string is generated from GSON that convert Java object to this JSON string:
products=%5B%7B%22customers_basket_date_added%22%3A%222019-04-22%2012%3A28%3A41%22%2C%22customers_basket_id%22%3A4%2C%22customers_basket_product%22%3A%7B%22attributes%22%3A%5B%5D%2C%22attributes_price%22%3A%220.0%22%2C%22categories_id%22%3A8%2C%22categories_name%22%3A%22Kemasan%20Botol%22%2C%22customers_basket_quantity%22%3A6%2C%22images%22%3A%5B%5D%2C%22isSale_product%22%3A%220%22%2C%22language_id%22%3A0%2C%22motorist_id%22%3A0%2C%22motorist_name%22%3A%22%22%2C%22id_jenis_products%22%3A0%2C%22qty_orders_max%22%3A12%2C%22qty_orders_min%22%3A6%2C%22qty_promo_bought%22%3A0%2C%22trans_limit%22%3A0%2C%22trans_live%22%3A0%2C%22manufacturers_id%22%3A0%2C%22parent_id%22%3A0%2C%22products_description%22%3A%22PROMO%20APRIL%20MURAH%21%5Cu003cbr%5Cu003e%5Cr%5CnRekomendasi%20harga%20jual%20warung%20Rp%203.500%2Fbotol%5Cu003cbr%5Cu003e%5Cr%5CnUntung%20Rp%201.300%20%2859%25%29%5Cu003cbr%5Cu003e%5Cr%5CnPembelian%20min%206%20botol%2C%20maks%2012%20botol%22%2C%22final_price%22%3A%222200.0%22%2C%22products_id%22%3A140%2C%22products_image%22%3A%22resources%2Fassets%2Fimages%2Fproduct_images%2F1555722212.promo-larutan-kakitiga.jpg%22%2C%22products_liked%22%3A0%2C%22products_model%22%3A%22%22%2C%22products_name%22%3A%22PROMO%20Cap%20Kaki%20Tiga%20Botol%20200%20ml%22%2C%22products_ordered%22%3A0%2C%22products_price%22%3A%222200.0%22%2C%22products_quantity%22%3A1%2C%22products_status%22%3A0%2C%22products_tax_class_id%22%3A0%2C%22products_viewed%22%3A0%2C%22products_weight%22%3A%221%22%2C%22products_weight_unit%22%3A%22Btl%22%2C%22sort_order%22%3A0%2C%22tax_class_id%22%3A0%2C%22tax_priority%22%3A0%2C%22tax_rates_id%22%3A0%2C%22tax_zone_id%22%3A0%2C%22total_price%22%3A%2213200.0%22%7D%2C%22customers_basket_product_attributes%22%3A%5B%5D%2C%22customers_id%22%3A0%7D%5D&status=0
that JSON string is generated from
new Gson().toJson(cartItemsList)
and that cartItemsList is an instance of class CartProduct
public class CartProduct {
#SerializedName("customers_id")
#Expose
private int customersId;
#SerializedName("customers_basket_id")
#Expose
private int customersBasketId;
#SerializedName("customers_basket_date_added")
#Expose
private String customersBasketDateAdded;
#SerializedName("customers_basket_product")
#Expose
private ProductDetails customersBasketProduct;
#SerializedName("customers_basket_product_attributes")
#Expose
private List<CartProductAttributes> customersBasketProductAttributes = new ArrayList<CartProductAttributes>();
public int getCustomersId() {
return customersId;
}
public void setCustomersId(int customersId) {
this.customersId = customersId;
}
public int getCustomersBasketId() {
return customersBasketId;
}
public void setCustomersBasketId(int customersBasketId) {
this.customersBasketId = customersBasketId;
}
public String getCustomersBasketDateAdded() {
return customersBasketDateAdded;
}
public void setCustomersBasketDateAdded(String customersBasketDateAdded) {
this.customersBasketDateAdded = customersBasketDateAdded;
}
public ProductDetails getCustomersBasketProduct() {
return customersBasketProduct;
}
public void setCustomersBasketProduct(ProductDetails customersBasketProduct) {
this.customersBasketProduct = customersBasketProduct;
}
public List<CartProductAttributes> getCustomersBasketProductAttributes() {
return customersBasketProductAttributes;
}
public void setCustomersBasketProductAttributes(List<CartProductAttributes> customersBasketProductAttributes) {
this.customersBasketProductAttributes = customersBasketProductAttributes;
}
}
and the class CartProductAttributes
public class CartProductAttributes implements Parcelable {
#SerializedName("customers_basket_id")
#Expose
private int customersBasketId;
#SerializedName("products_id")
#Expose
private String productsId;
#SerializedName("option")
#Expose
private Option option;
#SerializedName("values")
#Expose
private List<Value> values = new ArrayList<Value>();
public CartProductAttributes() {
}
public int getCustomersBasketId() {
return customersBasketId;
}
public void setCustomersBasketId(int customersBasketId) {
this.customersBasketId = customersBasketId;
}
public String getProductsId() {
return productsId;
}
public void setProductsId(String productsId) {
this.productsId = productsId;
}
/**
*
* #return
* The option
*/
public Option getOption() {
return option;
}
/**
*
* #param option
* The option
*/
public void setOption(Option option) {
this.option = option;
}
/**
*
* #return
* The values
*/
public List<Value> getValues() {
return values;
}
/**
*
* #param values
* The values
*/
public void setValues(List<Value> values) {
this.values = values;
}
//********** Describes the kinds of Special Objects contained in this Parcelable Instance's marshaled representation *********//
#Override
public int describeContents() {
return 0;
}
//********** Writes the values to the Parcel *********//
public void writeToParcel(Parcel parcel_out, int flags) {
parcel_out.writeValue(customersBasketId);
parcel_out.writeValue(productsId);
parcel_out.writeParcelable(option, flags);
parcel_out.writeList(values);
}
//********** Generates Instances of Parcelable class from a Parcel *********//
public static final Creator<CartProductAttributes> CREATOR = new Creator<CartProductAttributes>() {
// Creates a new Instance of the Parcelable class, Instantiating it from the given Parcel
#Override
public CartProductAttributes createFromParcel(Parcel parcel_in) {
return new CartProductAttributes(parcel_in);
}
// Creates a new array of the Parcelable class
#Override
public CartProductAttributes[] newArray(int size) {
return new CartProductAttributes[size];
}
};
//********** Retrieves the values from the Parcel *********//
protected CartProductAttributes(Parcel parcel_in) {
this.customersBasketId = parcel_in.readInt();
this.productsId = parcel_in.readString();
this.option = parcel_in.readParcelable(Option.class.getClassLoader());
this.values = new ArrayList<Value>();
parcel_in.readList(values, Value.class.getClassLoader());
}
}
and here is the ProductDetails class
public class ProductDetails implements Parcelable {
#SerializedName("products_id")
#Expose
private int productsId;
#SerializedName("products_quantity")
#Expose
private int productsQuantity;
#SerializedName("products_model")
#Expose
private String productsModel;
#SerializedName("products_image")
#Expose
private String productsImage;
#SerializedName("products_price")
#Expose
private String productsPrice;
#SerializedName("discount_price")
#Expose
private String discountPrice;
#SerializedName("products_date_added")
#Expose
private String productsDateAdded;
#SerializedName("products_last_modified")
#Expose
private String productsLastModified;
#SerializedName("products_date_available")
#Expose
private String productsDateAvailable;
#SerializedName("products_weight")
#Expose
private String productsWeight;
#SerializedName("products_weight_unit")
#Expose
private String productsWeightUnit;
#SerializedName("products_status")
#Expose
private int productsStatus;
#SerializedName("products_ordered")
#Expose
private int productsOrdered;
#SerializedName("products_liked")
#Expose
private int productsLiked;
#SerializedName("language_id")
#Expose
private int languageId;
#SerializedName("products_name")
#Expose
private String productsName;
#SerializedName("products_description")
#Expose
private String productsDescription;
#SerializedName("products_url")
#Expose
private String productsUrl;
#SerializedName("products_viewed")
#Expose
private int productsViewed;
#SerializedName("products_tax_class_id")
#Expose
private int productsTaxClassId;
#SerializedName("tax_rates_id")
#Expose
private int taxRatesId;
#SerializedName("tax_zone_id")
#Expose
private int taxZoneId;
#SerializedName("tax_class_id")
#Expose
private int taxClassId;
#SerializedName("tax_priority")
#Expose
private int taxPriority;
#SerializedName("tax_rate")
#Expose
private String taxRate;
#SerializedName("tax_description")
#Expose
private String taxDescription;
#SerializedName("tax_class_title")
#Expose
private String taxClassTitle;
#SerializedName("tax_class_description")
#Expose
private String taxClassDescription;
#SerializedName("categories_id")
#Expose
private int categoriesId;
#SerializedName("categories_name")
#Expose
private String categoriesName;
#SerializedName("categories_image")
#Expose
private String categoriesImage;
#SerializedName("categories_icon")
#Expose
private String categoriesIcon;
#SerializedName("parent_id")
#Expose
private int parentId;
#SerializedName("sort_order")
#Expose
private int sortOrder;
#SerializedName("isLiked")
#Expose
private String isLiked;
#SerializedName("manufacturers_id")
#Expose
private int manufacturersId;
#SerializedName("manufacturers_name")
#Expose
private String manufacturersName;
#SerializedName("manufacturers_image")
#Expose
private String manufacturersImage;
#SerializedName("manufacturers_url")
#Expose
private String manufacturersUrl;
#SerializedName("date_added")
#Expose
private String dateAdded;
#SerializedName("last_modified")
#Expose
private String lastModified;
#SerializedName("isSale_product")
#Expose
private String isSaleProduct;
#SerializedName("attributes_price")
#Expose
private String attributesPrice;
#SerializedName("final_price")
#Expose
private String productsFinalPrice;
#SerializedName("total_price")
#Expose
private String totalPrice = "";
#SerializedName("customers_basket_quantity")
#Expose
private int customersBasketQuantity;
#SerializedName("images")
#Expose
private List<Image> images = new ArrayList<Image>();
#SerializedName("attributes")
#Expose
private List<Attribute> attributes = new ArrayList<Attribute>();
#SerializedName("motorist_id")
#Expose
private long mMotoristId = 0;
#SerializedName("motorist_name")
#Expose
private String mMotoristName = "";
#SerializedName("qty_orders_min")
#Expose
private int mQuantityMin = 0;
#SerializedName("qty_orders_max")
#Expose
private int mQuantityMax = 0;
#SerializedName("id_jenis_products")
#Expose
private int mProductType = 0;
#SerializedName("trans_limit")
#Expose
private int mQuantityPromoLimit = 0;
#SerializedName("trans_live")
#Expose
private int mQuantityPromoLive = 0;
#SerializedName("qty_promo_bought")
#Expose
private int mQuantityPromoBought = 0;
#Override
public String toString() {
StringBuilder tempToString = new StringBuilder("\n--- ProductDetails ---\n");
tempToString.append("productsId: ").append(productsId).append("\n");
tempToString.append("productsName: ").append(productsName).append("\n");
tempToString.append("categoriesId: ").append(categoriesId).append("\n");
tempToString.append("categoriesName: ").append(categoriesName).append("\n");
tempToString.append("productsQuantity: ").append(productsQuantity).append("\n");
tempToString.append("productsDateAdded: ").append(productsDateAdded).append("\n");
tempToString.append("totalPrice: ").append(totalPrice).append("\n");
tempToString.append("minQuantity: ").append(mQuantityMin).append("\n");
tempToString.append("maxQuantity: ").append(mQuantityMax).append("\n");
tempToString.append("mProductType: ").append(mProductType).append("\n");
tempToString.append("mQuantityPromoLimit: ").append(mQuantityPromoLimit).append("\n");
tempToString.append("mQuantityPromoLive: ").append(mQuantityPromoLive).append("\n");
tempToString.append("mQuantityPromoBought: ").append(mQuantityPromoBought).append("\n");
return tempToString.toString();
}
}
and I want to convert that string JSON to be real JSON, for example like this:
{
"type": "donut",
"name": "Cake",
"toppings": [
{ "id": "5002", "type": "Glazed" },
{ "id": "5006", "type": "Chocolate with Sprinkles" },
{ "id": "5004", "type": "Maple" }
]
}
so I can read and replicate that JSON, and send it as JSON string from my iOS device to server using swift programming language. because I need to post that JSON string in the request body like this:
I get this JSON string from our android developer. this JSON string is generated from GSON library in Android, and it converts from Java Object to JSON string like that. unfortunately the android developer is also not understand how to convert it to real JSON, not JSON string.

how to fetch data from two tables in JPA

I am not able to fetch all records from two tables using the below query
I have tried this but I am getting a result from one table only. I want a result of both the tables i.e, client_software_param_mapping and client_file_configuration having the same ClientId which is a foreign key from third pojo(client_software_configuration) to first and second pojo.
public Result showClientConfiguration() {EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("defaultPU");
EntityManager entityManager = entityManagerFactory.createEntityManager();
Query q=entityManager.
createQuery("SELECT c FROM client_software_param_mapping c JOIN fetch client_file_configuration f ON c.ClientId=f.ClientId");
List data =q.getResultList();
return ok(Json.toJson(data));
}
first pojo
#Entity
public class client_file_configuration {
#Id
#GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String sourceFolder;
private String sourceFile;
private String processingFolder;
private String processingFile;
private String processedFolder;
private int intervalInMin;
private String readAfterDelay;
private String parserClass;
private String directoryMode;
private String fileMode;
private String actionMode;
private String type;
private String fileExpressionResolver;
#OneToOne
#JoinColumn(name = "ClientId")
private client_software_configuration clientSoftwareConfiguration;
public client_software_configuration getClientSoftwareConfiguration() {
return clientSoftwareConfiguration;
}
public void setClientSoftwareConfiguration(client_software_configuration clientSoftwareConfiguration) {
this.clientSoftwareConfiguration = clientSoftwareConfiguration;
}
}
secondpojo
#Entity
public class client_software_param_mapping {
#Id
#GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String paramKey;
private String paramValue;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getParamKey() {
return paramKey;
}
public void setParamKey(String paramKey) {
this.paramKey = paramKey;
}
public String getParamValue() {
return paramValue;
}
public void setParamValue(String paramValue) {
this.paramValue = paramValue;
}
#ManyToOne
#JoinColumn(name = "ClientId")
private client_software_configuration clientSoftwareConfiguration;
public client_software_configuration getClientSoftwareConfiguration() {
return clientSoftwareConfiguration;
}
public void setClientSoftwareConfiguration(client_software_configuration clientSoftwareConfiguration) {
this.clientSoftwareConfiguration = clientSoftwareConfiguration;
}
}
thirdpojo
#Entity
public class client_software_configuration {
#Id
#GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
private String url;
private int port;
private String endPoint;
private String isPost;
private String isPing;
private String params;
private int serialNo;
private String dateFormat;
private String token;
}
this is the right query as it is returning the object of the third pojo present at that ClientId so it is able to understand the type of ClientId.JPQL never uses table and column names. It always uses entity names and their mapped fields/properties names.so here I have taken the object of the third pojo having the ClientId field.
select c,p from client_file_configuration c,client_software_param_mapping p where c.clientSoftwareConfiguration = p.clientSoftwareConfiguration

Could not execute statement SQL Grammar Exception

Here is my entity class.
#Entity
public class Store implements Serializable {
private static final long serialVersionUID = 1L;
public Store() {
}
#Id
private int id;
private String code;
private String password;
private String forgetPasswordNote;
private String key;
private String ownerId;
private String storeLink;
private String activationCode;
private String name;
private String homepageUrl;
private String sessionToken;
private Date dateCreated;
private Date expireDate;
private Date lastModified;
private String nmPassword;
private String storeType;
private String premium;
private double money;
private boolean refreshed;
private String country;
private String lang;
private String varId;
private String fbPageId;
private boolean fbEnabled;
private boolean informative;
private boolean active;
private String fbEnabledBy;
private String ipAddress;
private String comments;
private float commission;
private String picasaEmail;
// all getter and setter goes here
}
Here is my controller
#Controller
public class RegController {
#RequestMapping(value = "/create/database")
public String createDatabase(ModelMap map, HttpServletRequest request) {
Store store = new Store();
store.setId(1);
store.setCode("1");
System.out.println("test worl");
#SuppressWarnings("deprecation")
SessionFactory sessionFactory = new Configuration().configure()
.buildSessionFactory();
try {
Session session = sessionFactory.openSession();
session.beginTransaction();
session.save(store);
session.getTransaction().commit();
session.close();
} catch (Exception e) {
System.out.println(e.toString());
}
return "home";
}
}
When I run the url localhost:8080/MyApp/create/database I am getting and error. org.hibernate.exception.SQLGrammarException: could not execute statement
Is there any reserved keyword on my entites class?
I have found the solution key is reserved keyword on mysql database so I simply change the key to storekey and everything work fine.

Categories

Resources