I'm very new to object oriented programming and am trying to create a library system simulation. I'm trying to create set methods which:
set the status of the library book as REFERENCE_ONLY (enum)
Set the status of the library book as AVAILABLE_FOR_LENDING (enum)
A boolean which decides if the book is ON_LOAN (enum)
My code:
public class LibrarySimulation {
public static void main(String[] args) {
}
public static String getBookAuthor(){
return null;
}
}
class LibraryBook {
public enum status {REFERENCE_ONLY, ON_LOAN, AVAILABLE_FOR_LENDING};
String bookAuthor;
String bookTitle;
int bookPages;
String classification;
int timesBorrowed;
int reservations;
static int totalOnLoan;
/**
* Constructor with arguments for a LibraryBook’s author(s),
* title and number of pages
* #param bookAuthor the names of the author(s) of this
* LibraryBook
* #param bookTitle the title of this LibraryBook
* #param bookPages the number of pages of this
* LibraryBook
*/
public LibraryBook(String bookAuthor,String bookTitle, int bookPages){
bookAuthor = null;
bookTitle = null;
bookPages = 0;
}
/**
* A method to reset the Library classification of this
* LibraryBook
* #param bookClass the proposed new classification
* #return true, if the proposed new
* classification has at
* least 3 characters to which
* the Library classification is
* reset.
* false, otherwise.
*/
public boolean setClassification(String bookClass){
if(bookClass.length() >= 3){
return false;
}
else{
return true;
}
}
public String setAsReferenceOnly(){
LibraryBook book = new LibraryBook(status.REFERENCE_ONLY);
}
//method for getting bookAuthor
public String getBookAuthor(){
return bookAuthor;
}
//method for getting bookTitle
public String getBookTitle(){
return bookTitle;
}
//method for getting bookPages
public int getBookPages(){
return bookPages;
}
//method for getting classification
public String getClassification(){
return classification;
}
//method for getting TimesBorrowed
public int getTimesBorrowed(){
return timesBorrowed;
}
}
Here, I had to reformat it in order to work with it, feel free to reformat it again to your own style.
public class LibrarySimulation
{
public static void main( String[] args )
{
}
public static String getBookAuthor() //XXX WTF is this?
{
return null;
}
}
class LibraryBook
{
public enum Status
{
REFERENCE_ONLY,
ON_LOAN,
AVAILABLE_FOR_LENDING
}
private final String author; //XXX replace with List<Author>?
private final String title;
private final int pageCount;
private String classification; //TODO: replace with "Classification" enum or object
private int borrowedCount;
private int reservationCount;
private static int totalOnLoan; //XXX why static?
private Status status;
/**
* Constructor.
*
* #param author the name(s) of the author(s) of this LibraryBook
* #param title the title of this LibraryBook
* #param pageCount the number of pages of this LibraryBook
*/
LibraryBook( String author, String title, int pageCount )
{
this.author = author;
this.title = title;
this.pageCount = pageCount;
}
//Gets the author
public String getAuthor()
{
return author;
}
//Gets the title
public String getTitle()
{
return title;
}
//Gets the page count
public int getPageCount()
{
return pageCount;
}
//Gets the borrowed count
public int getBorrowedCount()
{
return borrowedCount;
}
//Gets the classification
public String getClassification()
{
return classification;
}
/**
* Sets the classification of this {#link LibraryBook}, if the proposed new classification is at least 3 characters long.
*
* #param classification the proposed new {#link Classification}
*
* #return {#code true} if successful; {#code false} otherwise.
*/
public boolean setClassification( String classification ) //XXX throw exception instead of returning result?
{
if( classification.length() >= 3 )
{
return false;
}
else
{
return true;
}
}
/**
* Gets the {#link Status} of this {#link LibraryBook}.
*
* #return the status.
*/
public Status getStatus()
{
return status;
}
/**
* Sets the {#link Status} of this {#link LibraryBook}.
*
* #param status the new status.
*/
public void setStatus( Status status )
{
this.status = status;
}
}
Related
i'm developing a small web application.
That's my problem:
This is executed when a user try to add a new record in my Datatable
#RequestMapping(value="/saveJokerRule", method= RequestMethod.POST, consumes= "application/json", produces = "application/json")
#ResponseBody
public String saveJokerRule(#RequestBody String json) {
System.out.println("JSON EDITOR:" + json.toString());
EditorResponse editorResponse = new EditorResponse();
JokerRuleForm jokerRuleForm = new GsonBuilder().serializeNulls().create().fromJson(json, JokerRuleForm.class);
...
}
This is the valid json received by the server and printed by a System call:
{"action":"create","data":{"0":{"jokerRule":{"group":1,"campaignPhase":"","dailyLimit":"","weeklyLimit":"","monthlyLimit":"","validFrom":"","activity":1}}}}
That's the JokerRuleForm classs
public class JokerRuleForm {
#Expose
String action;
#Expose
#SerializedName("data")
Map<String, JokerRuleView> data;
...
}
That's the JokerRuleView class
public class JokerRuleView {
String idJokerRule;
private AgentGroup group;
private JokerRule jokerRule;
private Activity activity;
public class JokerRule{
private String campaignPhase;
private Integer dailyLimit;
private Integer weeklyLimit;
private Integer monthlyLimit;
private Date validFrom;
private Date dateUpdate;
private String group;
private String activity;
/**
* #return the campaignPhase
*/
public String getCampaignPhase() {
return campaignPhase;
}
/**
* #param campaignPhase the campaignPhase to set
*/
public void setCampaignPhase(String campaignPhase) {
this.campaignPhase = campaignPhase;
}
/**
* #return the dailyLimit
*/
public Integer getDailyLimit() {
return dailyLimit;
}
/**
* #param dailyLimit the dailyLimit to set
*/
public void setDailyLimit(Integer dailyLimit) {
this.dailyLimit = dailyLimit;
}
/**
* #return the weeklyLimit
*/
public Integer getWeeklyLimit() {
return weeklyLimit;
}
/**
* #param weeklyLimit the weeklyLimit to set
*/
public void setWeeklyLimit(Integer weeklyLimit) {
this.weeklyLimit = weeklyLimit;
}
/**
* #return the monthlyLimit
*/
public Integer getMonthlyLimit() {
return monthlyLimit;
}
/**
* #param monthlyLimit the monthlyLimit to set
*/
public void setMonthlyLimit(Integer monthlyLimit) {
this.monthlyLimit = monthlyLimit;
}
/**
* #return the validFrom
*/
public Date getValidFrom() {
return validFrom;
}
/**
* #param validFrom the validFrom to set
*/
public void setValidFrom(Date validFrom) {
this.validFrom = validFrom;
}
/**
* #return the dateUpdate
*/
public Date getDateUpdate() {
return dateUpdate;
}
/**
* #param dateUpdate the dateUpdate to set
*/
public void setDateUpdate(Date dateUpdate) {
this.dateUpdate = dateUpdate;
}
/**
* #return the group
*/
public String getGroup() {
return group;
}
/**
* #param group the group to set
*/
public void setGroup(String group) {
this.group = group;
}
/**
* #return the activity
*/
public String getActivity() {
return activity;
}
/**
* #param activity the activity to set
*/
public void setActivity(String activity) {
this.activity = activity;
}
}
public class Activity {
String idActivity;
String name;
/**
* #return the name
*/
public String getName() {
return name;
}
/**
* #param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* #return the idGroup
*/
public String getIdActivity() {
return idActivity;
}
/**
* #param idGroup the idGroup to set
*/
public void setIdActivity(String idActivity) {
this.idActivity = idActivity;
}
}
public class AgentGroup {
String idGroup;
String name;
/**
* #return the name
*/
public String getName() {
return name;
}
/**
* #param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* #return the idGroup
*/
public String getIdGroup() {
return idGroup;
}
/**
* #param idGroup the idGroup to set
*/
public void setIdGroup(String idGroup) {
this.idGroup = idGroup;
}
}
/**
* #return the idJokerRule
*/
public String getIdJokerRule() {
return idJokerRule;
}
/**
* #param idJokerRule the idJokerRule to set
*/
public void setIdJokerRule(String idJokerRule) {
this.idJokerRule = idJokerRule;
}
/**
* #return the agentGroup
*/
public AgentGroup getGroup() {
return group;
}
/**
* #param agentGroup the agentGroup to set
*/
public void setGroup(AgentGroup group) {
this.group = group;
}
/**
* #return the jokerRule
*/
public JokerRule getJokerRule() {
return jokerRule;
}
/**
* #param jokerRule the jokerRule to set
*/
public void setJokerRule(JokerRule jokerRule) {
this.jokerRule = jokerRule;
}
/**
* #return the activity
*/
public Activity getActivity() {
return activity;
}
/**
* #param activity the activity to set
*/
public void setActivity(Activity activity) {
this.activity = activity;
}
}
JokerRuleForm jokerRuleForm = new GsonBuilder().serializeNulls().create().fromJson(json, JokerRuleForm.class);
When executing this line i got a NumberFormatException empty string and i think it dailyLimit's or date's fault because it's empty and fromJson() method can't do what he need to do.
I've read something about a TypeAdapter that seems can fit to my case, but i don't really know how to proceed and i'm not sure is a valid solution.
Can someone help me?
The limit fields e.g. dailyLimit are empty strings in your JSON. This was suggested in JsonParseException when encountering an empty value for an int or long #472 issue but Gson team closed it because it makes no sense to parse "" as int.
One of the users provided a solution in his comment which allows to leniently parse the number values. I'd not go this route myself and fix JSON instead, but it's up to you:
public static final TypeAdapter<Number> UNRELIABLE_INTEGER = new TypeAdapter<Number>() {
#Override
public Number read(JsonReader in) throws IOException {
JsonToken jsonToken = in.peek();
switch (jsonToken) {
case NUMBER:
case STRING:
String s = in.nextString();
try {
return Integer.parseInt(s);
} catch (NumberFormatException ignored) {
}
try {
return (int)Double.parseDouble(s);
} catch (NumberFormatException ignored) {
}
return null;
case NULL:
in.nextNull();
return null;
case BOOLEAN:
in.nextBoolean();
return null;
default:
throw new JsonSyntaxException("Expecting number, got: " + jsonToken);
}
}
#Override
public void write(JsonWriter out, Number value) throws IOException {
out.value(value);
}
};
public static final TypeAdapterFactory UNRELIABLE_INTEGER_FACTORY = TypeAdapters.newFactory(int.class, Integer.class, UNRELIABLE_INTEGER);
Gson gson = new GsonBuilder()
.registerTypeAdapterFactory(UNRELIABLE_INTEGER_FACTORY)
.create();
My question is fairly simple. I want to pass a List of objects from an Activity to a Fragment thanks to a bundle and Parcelable.
Basically, I make a simple retrofit call from the MainActivity, get a List of objects as an answer, then pass it to the fragment.
I've implemented parcelable to my object classes, but it's not working.
public class Result implements Parcelable {
// Variables
#SerializedName("geometry")
#Expose
private Geometry geometry;
#SerializedName("icon")
#Expose
private String icon;
#SerializedName("id")
#Expose
private String id;
#SerializedName("name")
#Expose
private String name;
#SerializedName("opening_hours")
#Expose
private OpeningHours openingHours;
#SerializedName("photos")
#Expose
private List<Photo> photos = new ArrayList<Photo>();
#SerializedName("place_id")
#Expose
private String placeId;
#SerializedName("rating")
#Expose
private Double rating;
#SerializedName("reference")
#Expose
private String reference;
#SerializedName("scope")
#Expose
private String scope;
#SerializedName("types")
#Expose
private List<String> types = new ArrayList<String>();
#SerializedName("vicinity")
#Expose
private String vicinity;
#SerializedName("price_level")
#Expose
private Integer priceLevel;
// Constructor
public Result(Geometry geometry, String icon, String id, String name, OpeningHours openingHours, List<Photo> photos, String placeId, Double rating, String reference, String scope, List<String> types, String vicinity, Integer priceLevel) {
this.geometry = geometry;
this.icon = icon;
this.id = id;
this.name = name;
this.openingHours = openingHours;
this.photos = photos;
this.placeId = placeId;
this.rating = rating;
this.reference = reference;
this.scope = scope;
this.types = types;
this.vicinity = vicinity;
this.priceLevel = priceLevel;
}
// Getters & Setters
/**
*
* #return
* The geometry
*/
public Geometry getGeometry() {
return geometry;
}
/**
*
* #param geometry
* The geometry
*/
public void setGeometry(Geometry geometry) {
this.geometry = geometry;
}
/**
*
* #return
* The icon
*/
public String getIcon() {
return icon;
}
/**
*
* #param icon
* The icon
*/
public void setIcon(String icon) {
this.icon = icon;
}
/**
*
* #return
* The id
*/
public String getId() {
return id;
}
/**
*
* #param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* #return
* The name
*/
public String getName() {
return name;
}
/**
*
* #param name
* The name
*/
public void setName(String name) {
this.name = name;
}
/**
*
* #return
* The openingHours
*/
public OpeningHours getOpeningHours() {
return openingHours;
}
/**
*
* #param openingHours
* The opening_hours
*/
public void setOpeningHours(OpeningHours openingHours) {
this.openingHours = openingHours;
}
/**
*
* #return
* The photos
*/
public List<Photo> getPhotos() {
return photos;
}
/**
*
* #param photos
* The photos
*/
public void setPhotos(List<Photo> photos) {
this.photos = photos;
}
/**
*
* #return
* The placeId
*/
public String getPlaceId() {
return placeId;
}
/**
*
* #param placeId
* The place_id
*/
public void setPlaceId(String placeId) {
this.placeId = placeId;
}
/**
*
* #return
* The rating
*/
public Double getRating() {
return rating;
}
/**
*
* #param rating
* The rating
*/
public void setRating(Double rating) {
this.rating = rating;
}
/**
*
* #return
* The reference
*/
public String getReference() {
return reference;
}
/**
*
* #param reference
* The reference
*/
public void setReference(String reference) {
this.reference = reference;
}
/**
*
* #return
* The scope
*/
public String getScope() {
return scope;
}
/**
*
* #param scope
* The scope
*/
public void setScope(String scope) {
this.scope = scope;
}
/**
*
* #return
* The types
*/
public List<String> getTypes() {
return types;
}
/**
*
* #param types
* The types
*/
public void setTypes(List<String> types) {
this.types = types;
}
/**
*
* #return
* The vicinity
*/
public String getVicinity() {
return vicinity;
}
/**
*
* #param vicinity
* The vicinity
*/
public void setVicinity(String vicinity) {
this.vicinity = vicinity;
}
/**
*
* #return
* The priceLevel
*/
public Integer getPriceLevel() {
return priceLevel;
}
/**
*
* #param priceLevel
* The price_level
*/
public void setPriceLevel(Integer priceLevel) {
this.priceLevel = priceLevel;
}
// Parcelable
#Override
public int describeContents() {
return 0;
}
#Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeParcelable(this.geometry, flags);
dest.writeString(this.icon);
dest.writeString(this.id);
dest.writeString(this.name);
dest.writeParcelable(this.openingHours, flags);
dest.writeTypedList(this.photos);
dest.writeString(this.placeId);
dest.writeValue(this.rating);
dest.writeString(this.reference);
dest.writeString(this.scope);
dest.writeStringList(this.types);
dest.writeString(this.vicinity);
dest.writeValue(this.priceLevel);
}
protected Result(Parcel in) {
this.geometry = in.readParcelable(Geometry.class.getClassLoader());
this.icon = in.readString();
this.id = in.readString();
this.name = in.readString();
this.openingHours = in.readParcelable(OpeningHours.class.getClassLoader());
this.photos = in.createTypedArrayList(Photo.CREATOR);
this.placeId = in.readString();
this.rating = (Double) in.readValue(Double.class.getClassLoader());
this.reference = in.readString();
this.scope = in.readString();
this.types = in.createStringArrayList();
this.vicinity = in.readString();
this.priceLevel = (Integer) in.readValue(Integer.class.getClassLoader());
}
public static final Parcelable.Creator<Result> CREATOR = new Parcelable.Creator<Result>() {
#Override
public Result createFromParcel(Parcel source) {
return new Result(source);
}
#Override
public Result[] newArray(int size) {
return new Result[size];
}
};
}
And the MainActivity method call (simplified)
public void initRetrofitandCall(double latitude, double longitude, int PROXIMITY_RADIUS) {
GoogleApiInterface service = GoogleMapsClient.getClient().create(GoogleApiInterface.class);
Call<Example> call = service.getNearbyRestaurants("restaurant", latitude + "," + longitude, PROXIMITY_RADIUS);
call.enqueue(new Callback<Example>() {
#Override
public void onResponse(Call<Example> call, Response<Example> response) {
// Response List (working as intended)
List<Result> listTest = response.body().getResults();
Log.w("Nearby Restaurants", new GsonBuilder().setPrettyPrinting().create().toJson(listTest));
// Create bundle and put listTest in it (not working)
Bundle bundle = new Bundle();
bundle.putParcelable("valuesArray", listTest);
try {
} catch (Exception e) {
Log.d("onResponse", "There is an error");
e.printStackTrace();
}
}
#Override
public void onFailure(Call<Example> call, Throwable t) {
Log.d("onFailure", t.toString());
}
});
}
bundle.putParcelable("valuesArray", listTest); says "wrong 2nd argument type required android.os.Parcelable
All my model classes implements Parcelable, I'm only showing the Result.class to not make the post too long. I also tried with the Serializable way, and I get the same kind of issues. As if Parcelable or Serializable are not implemented in my model classes.
Thank you a lot for any help than you can provide me with.
You need to use ParcelableArrayList to put the list into the bundle
bundle.putParcelableArrayList("valuesArray", listTest);
Add this to build.gradle
compile 'com.google.code.gson:gson:2.8.1'
convert your Arraylist to json using Gson and pass the json string as an argument to the fragment.
Bundle bundle = new Bundle();
bundle.putString("valuesArray", new Gson().toJson(listTest));
// set Fragmentclass Arguments
Fragmentclass fragobj = new Fragmentclass();
fragobj.setArguments(bundle);
and then retrive the list of result in fragment like this,
#Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
List<Result> result = new Gson().fromJson(getArguments().getString("valuesArray"),
new TypeToken<List<Result>>(){}.getType());
return inflater.inflate(R.layout.fragment, container, false);
}
This work for me:
Intent intent = new Intent(YourActivity.this, YourFragment.class);
intent.putParcelableArrayListExtra(Utils.LIST_TEST, (ArrayList<? extends Parcelable>) listTest);
Am using Spring JPA repository
public String getNextULAID();
// Selecting particular columns from a table
#Query(value="select dbts,firstName from user_details
where ULA_ID= :ulaID and DEL_FLG = 'N'" ,nativeQuery=true)
public UserDetails fetchUser(#Param("ulaID")String ulaId);
}
Throws error
{
"timestamp": 1499336001602,
"status": 500,
"error": "Internal Server Error",
"exception": "org.springframework.dao.InvalidDataAccessResourceUsageException",
"message": "could not extract ResultSet; SQL [n/a];
nested exception is org.hibernate.exception.SQLGrammarException:
could not extract ResultSet",
"path": "/viewProfile/1"
}
But if I select all data from the database,then its working perfectly
public String getNextULAID();
// selecting all records
#Query(value="select * from user_details
where ULA_ID= :ulaID and DEL_FLG = 'N'" ,nativeQuery=true)
public UserDetails fetchUser(#Param("ulaID")String ulaId);
}
Here is my entity...
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
// End of user code
#Entity
#Table(name="user_details")
public class UserDetails {
/**
* Description of the property dbts.
*/
private Integer dbts;
/**
* Description of the property ulaId.
*/
#Id
private String ulaId = "";
/**
* Description of the property firstName.
*/
private String firstName = "";
/**
* Description of the property lastName.
*/
private String lastName = "";
/**
* Description of the property emailId.
*/
private String emailId = "";
/**
* Description of the property mobileNo.
*/
private String mobileNo = "";
/**
* Description of the property gender.
*/
private String gender = "";
/**
* Description of the property dateOfBirth.
*/
private String dateOfBirth = "";
/**
* Description of the property address1.
*/
private String address1 = "";
/**
* Description of the property address2.
*/
private String address2 = "";
/**
* Description of the property city.
*/
private String city = "";
/**
* Description of the property state.
*/
private String state = "";
/**
* Description of the property country.
*/
private String country = "";
/**
* Description of the property pincode.
*/
private String pincode = "";
/**
* Description of the property profileGroup.
*/
private String profileGroup = "";
/**
* Description of the property delFlg.
*/
private String delFlg = "";
/**
* Description of the property remarks.
*/
private String remarks = "";
/**
* Description of the property rCreTime.
*/
private String rCreTime = "";
/**
* Description of the property rModTime.
*/
private String rModTime = "";
// Start of user code (user defined attributes for UserDetails)
// End of user code
/**
* The constructor.
*/
public UserDetails() {
// Start of user code constructor for UserDetails)
super();
// End of user code
}
// Start of user code (user defined methods for UserDetails)
// End of user code
/**
* Returns dbts.
* #return dbts
*/
public Integer getDbts() {
return this.dbts;
}
/**
* Sets a value to attribute dbts.
* #param newDbts
*/
public void setDbts(Integer newDbts) {
this.dbts = newDbts;
}
/**
* Returns ulaId.
* #return ulaId
*/
public String getUlaId() {
return this.ulaId;
}
/**
* Sets a value to attribute ulaId.
* #param newUlaId
*/
public void setUlaId(String newUlaId) {
this.ulaId = newUlaId;
}
/**
* Returns firstName.
* #return firstName
*/
public String getFirstName() {
return this.firstName;
}
/**
* Sets a value to attribute firstName.
* #param newFirstName
*/
public void setFirstName(String newFirstName) {
this.firstName = newFirstName;
}
/**
* Returns lastName.
* #return lastName
*/
public String getLastName() {
return this.lastName;
}
/**
* Sets a value to attribute lastName.
* #param newLastName
*/
public void setLastName(String newLastName) {
this.lastName = newLastName;
}
/**
* Returns emailId.
* #return emailId
*/
public String getEmailId() {
return this.emailId;
}
/**
* Sets a value to attribute emailId.
* #param newEmailId
*/
public void setEmailId(String newEmailId) {
this.emailId = newEmailId;
}
/**
* Returns mobileNo.
* #return mobileNo
*/
public String getMobileNo() {
return this.mobileNo;
}
/**
* Sets a value to attribute mobileNo.
* #param newMobileNo
*/
public void setMobileNo(String newMobileNo) {
this.mobileNo = newMobileNo;
}
/**
* Returns gender.
* #return gender
*/
public String getGender() {
return this.gender;
}
/**
* Sets a value to attribute gender.
* #param newGender
*/
public void setGender(String newGender) {
this.gender = newGender;
}
/**
* Returns dateOfBirth.
* #return dateOfBirth
*/
public String getDateOfBirth() {
return this.dateOfBirth;
}
/**
* Sets a value to attribute dateOfBirth.
* #param newDateOfBirth
*/
public void setDateOfBirth(String newDateOfBirth) {
this.dateOfBirth = newDateOfBirth;
}
/**
* Returns address1.
* #return address1
*/
public String getAddress1() {
return this.address1;
}
/**
* Sets a value to attribute address1.
* #param newAddress1
*/
public void setAddress1(String newAddress1) {
this.address1 = newAddress1;
}
/**
* Returns address2.
* #return address2
*/
public String getAddress2() {
return this.address2;
}
/**
* Sets a value to attribute address2.
* #param newAddress2
*/
public void setAddress2(String newAddress2) {
this.address2 = newAddress2;
}
/**
* Returns city.
* #return city
*/
public String getCity() {
return this.city;
}
/**
* Sets a value to attribute city.
* #param newCity
*/
public void setCity(String newCity) {
this.city = newCity;
}
/**
* Returns state.
* #return state
*/
public String getState() {
return this.state;
}
/**
* Sets a value to attribute state.
* #param newState
*/
public void setState(String newState) {
this.state = newState;
}
/**
* Returns country.
* #return country
*/
public String getCountry() {
return this.country;
}
/**
* Sets a value to attribute country.
* #param newCountry
*/
public void setCountry(String newCountry) {
this.country = newCountry;
}
/**
* Returns pincode.
* #return pincode
*/
public String getPincode() {
return this.pincode;
}
/**
* Sets a value to attribute pincode.
* #param newPincode
*/
public void setPincode(String newPincode) {
this.pincode = newPincode;
}
/**
* Returns profileGroup.
* #return profileGroup
*/
public String getProfileGroup() {
return this.profileGroup;
}
/**
* Sets a value to attribute profileGroup.
* #param newProfileGroup
*/
public void setProfileGroup(String newProfileGroup) {
this.profileGroup = newProfileGroup;
}
/**
* Returns delFlg.
* #return delFlg
*/
public String getDelFlg() {
return this.delFlg;
}
/**
* Sets a value to attribute delFlg.
* #param newDelFlg
*/
public void setDelFlg(String newDelFlg) {
this.delFlg = newDelFlg;
}
/**
* Returns remarks.
* #return remarks
*/
public String getRemarks() {
return this.remarks;
}
/**
* Sets a value to attribute remarks.
* #param newRemarks
*/
public void setRemarks(String newRemarks) {
this.remarks = newRemarks;
}
/**
* Returns rCreTime.
* #return rCreTime
*/
public String getRCreTime() {
return this.rCreTime;
}
/**
* Sets a value to attribute rCreTime.
* #param newRCreTime
*/
public void setRCreTime(String newRCreTime) {
this.rCreTime = newRCreTime;
}
/**
* Returns rModTime.
* #return rModTime
*/
public String getRModTime() {
return this.rModTime;
}
/**
* Sets a value to attribute rModTime.
* #param newRModTime
*/
public void setRModTime(String newRModTime) {
this.rModTime = newRModTime;
}
}
What changes i have to do, to get specific columns from multiple data.
Thanks in advance.
You should return List<Object[]> instead of UserDetails in case of native query.
Another way is to create projection. You can use projections from Spring Data JPA http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#projections.
I am trying to parse JSON Object using volley but it is giving all the values as null
I am using GsonRequest custom class to parse using GSON library
public class GsonRequest < T > extends JsonRequest < T > {
/** Charset for request. */
private static final String PROTOCOL_CHARSET = "utf-8";
/** Content type for request. */
private static final String PROTOCOL_CONTENT_TYPE = String.format("application/json; charset=%s", PROTOCOL_CHARSET);
private final Gson mGson;
//private final String mBody;
private final Class < T > clazz;
private final Listener < T > listener;
private final Map < String,
String > headers;
private final String mBody;
public GsonRequest(int method, String url, String body, Class < T > clazz, Map < String, String > headers, Response.Listener < T > listener, Response.ErrorListener errorListener) {
super(method, url, (body == null) ? null: body, listener, errorListener);
this.clazz = clazz;
this.mBody = body;
this.headers = headers;
this.listener = listener;
mGson = new Gson();
}#Override
public Map < String,
String > getHeaders() throws AuthFailureError {
return headers != null ? headers: super.getHeaders();
}
#Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
#Override
protected Response < T > parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(mGson.fromJson(json, clazz), HttpHeaderParser.parseCacheHeaders(response));
} catch(UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch(JsonSyntaxException e) {
Log.e("JsonSyntaxException", " " + e);
return Response.error(new ParseError(e));
}
}
}
I have created model class using http://www.jsonschema2pojo.org/ below is my model class
public class ModelConnection {
private List < Datum > data = new ArrayList < Datum > ();
private Integer code;
private Object message;
private Map < String,
Object > additionalProperties = new HashMap < String,
Object > ();
/**
*
* #return
* The data
*/
public List < Datum > getData() {
return data;
}
/**
*
* #param data
* The Data
*/
public void setData(List < Datum > data) {
this.data = data;
}
/**
*
* #return
* The code
*/
public Integer getCode() {
return code;
}
/**
*
* #param code
* The Code
*/
public void setCode(Integer code) {
this.code = code;
}
/**
*
* #return
* The message
*/
public Object getMessage() {
return message;
}
/**
*
* #param message
* The Message
*/
public void setMessage(Object message) {
this.message = message;
}
public Map < String,
Object > getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
public class Datum {
private Integer userID;
private String firstName;
private String lastName;
private String title;
private String organization;
private String industry;
private String location;
private String profileSummary;
private String imagePath;
private List < Object > interests = new ArrayList < Object > ();
private Map < String,
Object > additionalProperties = new HashMap < String,
Object > ();
/**
*
* #return
* The userID
*/
public Integer getUserID() {
return userID;
}
/**
*
* #param userID
* The UserID
*/
public void setUserID(Integer userID) {
this.userID = userID;
}
/**
*
* #return
* The firstName
*/
public String getFirstName() {
return firstName;
}
/**
*
* #param firstName
* The FirstName
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
*
* #return
* The lastName
*/
public String getLastName() {
return lastName;
}
/**
*
* #param lastName
* The LastName
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
*
* #return
* The title
*/
public String getTitle() {
return title;
}
/**
*
* #param title
* The Title
*/
public void setTitle(String title) {
this.title = title;
}
/**
*
* #return
* The organization
*/
public String getOrganization() {
return organization;
}
/**
*
* #param organization
* The Organization
*/
public void setOrganization(String organization) {
this.organization = organization;
}
/**
*
* #return
* The industry
*/
public String getIndustry() {
return industry;
}
/**
*
* #param industry
* The Industry
*/
public void setIndustry(String industry) {
this.industry = industry;
}
/**
*
* #return
* The location
*/
public String getLocation() {
return location;
}
/**
*
* #param location
* The Location
*/
public void setLocation(String location) {
this.location = location;
}
/**
*
* #return
* The profileSummary
*/
public String getProfileSummary() {
return profileSummary;
}
/**
*
* #param profileSummary
* The ProfileSummary
*/
public void setProfileSummary(String profileSummary) {
this.profileSummary = profileSummary;
}
/**
*
* #return
* The imagePath
*/
public String getImagePath() {
return imagePath;
}
/**
*
* #param imagePath
* The ImagePath
*/
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
/**
*
* #return
* The interests
*/
public List < Object > getInterests() {
return interests;
}
/**
*
* #param interests
* The Interests
*/
public void setInterests(List < Object > interests) {
this.interests = interests;
}
public Map < String,
Object > getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
}
This is the response from rest client
{
-"Data": [2]
-0: {
"UserID": 124
"FirstName": "Mixer"
"LastName": "Development"
"Title": "Flipdex Architect "
"Organization": "CoStrategix"
"Industry": "Software "
"Location": "Bengaluru Area, India"
"ProfileSummary": "Mixer#^*+~|Software engineer?????????? 123456789"#&$)(;:/-.,?!ASDFZgZhXjZkZlZXCVZbNZmQWERTYUIOZp[]{}#%^*+¥£€><~|\_.,?! "
"ImagePath": "https://media.licdn.com/mpr/mprx/0_tiUBxkxpFtDhAIKrczfJBnzj6FMhlWiAOiiJJAUpF8YTlJayP3DBA3Mp5NrycIrrczfJ48nymk-3-DwljKYwBKBKIk-8-DErYKYNylCgh5F24Rlu-3HVpLuuwAHKUDj3c1VURiTsxsU"
"Interests": [0]
}
-1: {
"UserID": 153
"FirstName": "Mixer"
"LastName": "Android"
"Title": "Assistant Manager at CoStrategix"
"Organization": "CoStrategix"
"Industry": "Software"
"Location": "Bengaluru Area, India"
"ProfileSummary": "We have worked with over 35+ product companies and bring the critical thinking and technology expertise to launching your product. We have l"
"ImagePath": "https://media.licdn.com/mpr/mprx/0_0EwKKqh9nkV0X1t3pmPYj6B9ncH0T_TTJy0K9h29KnTYT1u8zElOR_C9q3zGb1gDJyjY4_SnOQUOGFf8zJmuZhhsUQUxGFHTzJmPP3zBKbm1HA1jMe4j1vRQR1T7wFxKysoyq1W3CaQ"
"Interests": [0]
}
"Code": 1
"Message": null
}
finally this is the way I am calling the api
GsonRequest request = new GsonRequest(Request.Method.GET, newConnectionAPI,null, ModelConnection.class, getHeaders(),
new Response.Listener<ModelConnection>() {
#Override
public void onResponse(ModelConnection response) {
if (listener != null) {
listener.networkResponseSuccessful(response);
}
}
}, new Response.ErrorListener() {
#Override
public void onErrorResponse(VolleyError error) {
Log.d("volley error", "" + error);
}
});
request.setTag(tag);
request.setRetryPolicy(new DefaultRetryPolicy(15000, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
requestQueue.add(request);
when I debug I get all the values as null
Can anyone please help me out
Thought of answering my own question, may be someone can get help through this...
I created my Model class using jsonschema2pojo where I had to select JSON along with GSON(Which I forgot to select).
you can see the difference if you compare the Model classes posted above and below
public class ModelConnection {
#SerializedName("Data")#Expose
private List < Datum > data = new ArrayList < Datum > ();#SerializedName("Code")#Expose
private Integer code;#SerializedName("Message")#Expose
private Object message;
private Map < String,
Object > additionalProperties = new HashMap < String,
Object > ();
/**
*
* #return
* The data
*/
public List < Datum > getData() {
return data;
}
/**
*
* #param data
* The Data
*/
public void setData(List < Datum > data) {
this.data = data;
}
/**
*
* #return
* The code
*/
public Integer getCode() {
return code;
}
/**
*
* #param code
* The Code
*/
public void setCode(Integer code) {
this.code = code;
}
/**
*
* #return
* The message
*/
public Object getMessage() {
return message;
}
/**
*
* #param message
* The Message
*/
public void setMessage(Object message) {
this.message = message;
}
public Map < String,
Object > getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
public class Datum implements Serializable {
#SerializedName("UserId")#Expose
private Integer userID;#SerializedName("FirstName")#Expose
private String firstName;#SerializedName("LastName")#Expose
private String lastName;#SerializedName("Title")#Expose
private String title;#SerializedName("Organization")#Expose
private String organization;#SerializedName("Industry")#Expose
private String industry;#SerializedName("Location")#Expose
private String location;#SerializedName("ProfileSummary")#Expose
private String profileSummary;#SerializedName("ImagePath")#Expose
private String imagePath;#SerializedName("Interests")#Expose
private ArrayList < Interest > interest = new ArrayList < Interest > ();
private Map < String,
Object > additionalProperties = new HashMap < String,
Object > ();
/**
*
* #return
* The userID
*/
public Integer getUserID() {
return userID;
}
/**
*
* #param userID
* The UserID
*/
public void setUserID(Integer userID) {
this.userID = userID;
}
/**
*
* #return
* The firstName
*/
public String getFirstName() {
return firstName;
}
/**
*
* #param firstName
* The FirstName
*/
public void setFirstName(String firstName) {
this.firstName = firstName;
}
/**
*
* #return
* The lastName
*/
public String getLastName() {
return lastName;
}
/**
*
* #param lastName
* The LastName
*/
public void setLastName(String lastName) {
this.lastName = lastName;
}
/**
*
* #return
* The title
*/
public String getTitle() {
return title;
}
/**
*
* #param title
* The Title
*/
public void setTitle(String title) {
this.title = title;
}
/**
*
* #return
* The organization
*/
public String getOrganization() {
return organization;
}
/**
*
* #param organization
* The Organization
*/
public void setOrganization(String organization) {
this.organization = organization;
}
/**
*
* #return
* The industry
*/
public String getIndustry() {
return industry;
}
/**
*
* #param industry
* The Industry
*/
public void setIndustry(String industry) {
this.industry = industry;
}
/**
*
* #return
* The location
*/
public String getLocation() {
return location;
}
/**
*
* #param location
* The Location
*/
public void setLocation(String location) {
this.location = location;
}
/**
*
* #return
* The profileSummary
*/
public String getProfileSummary() {
return profileSummary;
}
/**
*
* #param profileSummary
* The ProfileSummary
*/
public void setProfileSummary(String profileSummary) {
this.profileSummary = profileSummary;
}
/**
*
* #return
* The imagePath
*/
public String getImagePath() {
return imagePath;
}
/**
*
* #param imagePath
* The ImagePath
*/
public void setImagePath(String imagePath) {
this.imagePath = imagePath;
}
/**
*
* #return
* The interests
*/
public ArrayList < Interest > getInterest() {
return interest;
}
/**
*
* #param interests
* The Interests
*/
public void setInterest(ArrayList < Interest > interests) {
this.interest = interests;
}
public Map < String,
Object > getAdditionalProperties() {
return this.additionalProperties;
}
public void setAdditionalProperty(String name, Object value) {
this.additionalProperties.put(name, value);
}
}
public class Interest {
#SerializedName("Name")#Expose
private String name;
/**
*
* #return
* The name
*/
public String getName() {
return name;
}
/**
*
* #param name
* The Name
*/
public void setName(String name) {
this.name = name;
}
}
}
May be because the objects were not properly serialized so GSON was unable to parse the JSON String properly.
Others advice over the above assumption is most welcome.
I have a logical problem to understand, how create a private set of inhabitant object. Here my two classes:
package main;
import java.util.Set;
/**
* #author
* #version 0.1
*
*/
public class City {
private String name;
/**
*HERE is my Problem*/
private Set<Inhabitants> Inhabitants {
}
/**
* standard cunstructor
*/
public City(String n, ) {
setName(n);
}
/**
* Search a particular name of inhabitant
* #return object of inhabitant
*/
static Set<Inhabitants> Search(){
return inhabitants;
}
/**
* Creates a inhabitant object and
* add to the set of inhabitants of the city
*
* #param name
* #param datebirth
* #param maritalStatus
* #
*/
public void Add(String name,String datebirth,String maritalStatus) {
}
/**
* Return all inhabitants objects of the city
* #return
*/
static Set<Inhabitants> ReturnAll(){
return inhabitants;
}
/**
* Return city name
* #return
*/
static Set<Inhabitants> ReturnCityName(){
return inhabitants;
}
/**
* #return the name
*/
public String getName() {
return name;
}
/**
* #param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* #return the inhabitants
*/
public Set<Inhabitants> getInhabitants() {
return inhabitants;
}
/**
* #param inhabitants the inhabitants to set
*/
public void setInhabitants(Set<Inhabitants> inhabitants) {
this.inhabitants = inhabitants;
}
}
package main;
/**
* #version 0.1
*/
public class Inhabitants {
private String name;
private String datebirth;
private Boolean maritalStatus;
/**
* standard constructor
*/
public Inhabitants() {
}
/**
* #return the name
*/
public String getName() {
return name;
}
/**
* #param name the name to set
*/
public void setName(String name) {
this.name = name;
}
/**
* #return the datebirth
*/
public String getDatebirth() {
return datebirth;
}
/**
* #param datebirth the datebirth to set
*/
public void setDatebirth(String datebirth) {
this.datebirth = datebirth;
}
/**
* #return the maritalStatus
*/
public Boolean getMaritalStatus() {
return maritalStatus;
}
/**
* #param maritalStatus the maritalStatus to set
*/
public void setMaritalStatus(Boolean maritalStatus) {
this.maritalStatus = maritalStatus;
}
}
It sounds like a simple problem. You didn't need so much code:
package collections;
/**
* Person
* #author Michael
* #link https://stackoverflow.com/questions/30958832/java-how-create-a-set-of-object-with-two-classes
* #since 6/20/2015 5:06 PM
*/
public class Person {
private final String name;
public Person(String name) {
if (name == null || name.trim().length() == 0) throw new IllegalArgumentException("name cannot be blank or null");
this.name = name;
}
public String getName() {
return name;
}
#Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return name.equals(person.name);
}
#Override
public int hashCode() {
return name.hashCode();
}
#Override
public String toString() {
final StringBuilder sb = new StringBuilder("Person{");
sb.append("name='").append(name).append('\'');
sb.append('}');
return sb.toString();
}
}
package collections;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
/**
* City
* #author Michael
* #link https://stackoverflow.com/questions/30958832/java-how-create-a-set-of-object-with-two-classes
* #since 6/20/2015 5:06 PM
*/
public class City {
private Set<Person> inhabitants;
public City(Collection<Person> inhabitants) {
this.inhabitants = (inhabitants == null) ? new HashSet<Person>() : new HashSet<Person>(inhabitants);
}
public void addInhabitant(Person p) {
if (p != null) {
this.inhabitants.add(p);
}
}
#Override
public String toString() {
final StringBuilder sb = new StringBuilder("City{");
sb.append("inhabitants=").append(inhabitants);
sb.append('}');
return sb.toString();
}
}